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