配置管理每日构建(三)

2008-04-09 04:05:03来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

3.自动编译系统的配置

3.1. 目录结构

工程源代码目录(NBDSOURCE):在该目录下 Checkout 工程的源代码。它是整个工程的核心。
工程源代码配置目录(NBDSRCCTL):在源代码目录下,创建一个存放控制文件的目录,如 config,或者 admin。主要是放入存储编译日期、版本的文件
Nightly Build编译脚本目录 (NBDSCRIPT):在该目录 Checkout 执行自动编译的脚本。它是整个编译系统的工具箱。
Nightly Build启动目录 (NBDHOMEDIR):同样的编译脚本,要能够编译一个工程的不同的分支,也要能够编译如前所述的 nightly, milestone, sticky 版本。这就需要建立发起编译的目录,该目录主要放置一些能够区分不同编译条件的配置文件,以及启动编译脚本的钩子脚本。

3.2. 配置文件
3.2.1. NBDHOMEDIR/build.ini
用于指定源代码、脚本的路径。
#脚本的根路径 源代码的根路径
NBDSCRIPT=/home/Administrator/work/jiangxin/src/nightlybuild/script/
NBDSOURCE=/home/Administrator/work/jiangxin/src/dlltest/

3.2.2. NBDHOMEDIR/LABEL
决定编译的版本:nightly, milestone, 还是 sticky 版本。
空文件,或者内容为 nightly 的文件,意味着编译 nightly 版本。
内容为 milestone,意味着编译 milestone 版本。
内容为某一真实存在的标签 LABEL/TAG,意味着编译该版本的 sticky 编译。

3.2.3. NBDHOMEDIR/BRANCH
如果是空文件,或者内容为 main,意味着当前代码处于主线。
如果是其它内容,则该内容为分支 LABEL/TAG。
这个文件是和 CVS 的 MAGIC BRANCH 的概念向对应的,参见:《Per Cederqvist's CVS Manual》

3.2.4. NBDHOMEDIR/nightly.sh
调用真正的脚本的钩子脚本。

#!/bin/sh
#set -x

NBDHOMEDIR=`dirname `

if echo "$NBDHOMEDIR" | grep -q -v "^/"; then
NBDHOMEDIR="`pwd`/$"
fi

NBDHOMEDIR=$
NBDHOMEDIR=$
export NBDHOMEDIR

build_file_name="$/build.ini"

if [ ! -f "$build_file_name" ]; then
echo "not find $build_file_name!" && exit 1
fi

. $build_file_name

cd $NBDSCRIPT
sh nightlybuild.sh "$@"

3.2.5. NBDSRCCTL/VERSION
记录版本号、编译日期

[myapp]
module=RegDllTest otherapp
version=1.3.5.10
buildtime=2003-04-01 20:44:48
revisonfile=RegDllTest/RegDllTest.rc

[mydll]
module=DisplayAppName
version=2.1.3.19
buildtime=2003-02-12 10:21:08
revisonfile=DisplayAppName/DisplayAppName.rc

[global]
version=1.0.0.1
buildtime=2003-04-01 20:44:48

表示一个单元的开始
模块列表,需要检查代码更新的模块列表
定义该单元模块的版本号
上一次该模块编译的时间
包含版本信息的资源文件,用本节定义的版本号去更新资源文件
全局配置开始
整个软件包的版本号

3.2.6. NBDSRCCTL/PROMOTION
记录里程碑版本号。例如:
JOHNSON-V-1-0-1

A. Nightly Build命令行
Synopsis: nightly.sh [options...] [command...]
Options :
-release (-r)
build RELEASE version (default)
-engineer (-e)
build engineer version
-force (-f)
force build.

Command:
nightly (n)
All commands are bind to one. there are three steps to run nightly.
update, compile, link, post
update (up)
1st step of running nightly.
update_source_code : step 1.1
update_version_file : step 1.2
update_rc_file : step 1.3
compile (c)
2nd step of running nightly.
run custom make.bat : step 2.1
link (l)
3rd step of running nightly.
run custom link.bat : step 3.1
post (l)
4th step of running nightly.
cp package to ftp_dir : step 4.1
checkin version file : step 4.2
Other Command:
help
This screen.
config
Additional help.

run nightly.sh config to see additional help.

B. 编程工具的命令行支持

B.1. Unix/Linux

使用autoconf/automake/autoheader工具
用autoconf/automake/autoheader工具来处理各种移植性的问题,用这些工具完成系统配置信息的收集,制作makefile文件。然后在打算编译源码时只需要通过 “configure; make”这样简单的命令就可以得到干净利落的编译。
GNU Makefile 参见 GNU Makefile和configure
BSD Makefile 参见 FreeBSD Porter's Handbook

B.2. Visual C
msdev 提供命令行编译支持,可以直接使用 .dsw, .dsp 文件执行命令行编译。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:配置管理每日构建(一)

下一篇:结构设计检查表