【IT168 技术文章】
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
表示一个单元的开始
模块列表,需要检查代码更新的模块列表
定义该单元模块的版本号
上一次该模块编译的时间
包含版本信息的资源文件,用本节定义的版本号去更新资源文件
全局配置开始
整个软件包的版本号