分类: 项目管理
2011-03-03 16:23:50
CruiseControl是一个持续集成工具,持续集成是一个很好的敏捷实践。在项目中搭建CruiseControl环境,通过执行频繁的项目构建,及时暴露出隐藏的Bug,从而减少定位以及修改Bug的时间和代价。本文介绍了根据参考文档配置CruiseControl的过程。
配置环境为RHEL5.4,CruiseControl 2.8.3 Binary,版本管理工具为SVN。
参考文档:http://www.blogjava.net/lihao336/archive/2010/06/29/324822.html
一.准备工作
1.配置Java环境
>vi $HOME/.bash_profile
在文件末尾添加Java环境变量:
#set java environment
export JAVA_HOME=/usr/java/jdk1.5.0_22
export PATH=$JAVA_HOME/bin:$PATH:$HOME/bin
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
>source .bash_profile
2.解压CruiseControl
解压CruiseControl-2.8.3-bin.zip ,
其中三个值得注意的目录是:
目录 内容
projects 存放CruiseControl从源代码仓库中检出的代码。
logs 存放构建报告和日志。
artifacts 存放构建成功后产生的输出文件(如jar包,apk包等)。
3.从SVN仓库中checkout出源码
CruiseControl第一次不支持自动检出代码,所以在构建项目之前要先把项目代码手工checkout到本地。说明一下,最好以项目(project)为单位检出,不然在配置config文件时不太好标注build文件的位置。本文假设项目(project)名为sampleproject,SVN源代码仓库位于/repositoryserver/svnrepository中。
在project目录下新建sampleproject文件夹,用来存放准备build的工程。
> mkdir sampleproject
> svn checkout sampleproject
二.配置config.xml
cruisecontrol根据config.xml中配置的项目信息执行构建。
repositoryLocation=""
username="test" password="test" />
dest="artifacts/${project.name}" />
returnaddress="builderserver@126.com"
skipusers="true"
subjectprefix="[admin.Build.Server]"
buildresultsurl=""
username="builderserver@126.com"
password="password"
charset="UTF-8">
三.配置cruisecontrol.sh
cruisecontrol.sh是cruisecontrol的启动脚本,通过这个脚本中初始化一些环境变量,开始执行build loop,并开启jetty服务器。
打开cruisecontrol.sh,在文件末尾找到
$JAVA_HOME/bin/java $CC_OPTS -Djavax.management.builder.initial=mx4j.server.MX4JMBeanServerBuilder "-Dcc.library.dir=$LIBDIR" "-Djetty.logs=$JETTY_LOGS" -jar "$LAUNCHER" $@ -jmxport 8000 -webport 8080 -rmiport 1099 &
去掉 & 符号,这样启动cruisecontrol时,阻止将其放到后台执行,要关闭cruisecontrol时,按下 Ctrl+C 即可。
修改-jmxport、-webport、-rmiport等参数可以自定义项目构建结果的发布端口。
PS:
如果项目的log文件比较大,或者构建时使用内存较多,可以在cruisecontrol.sh中增加JAVA命令行参数,扩大JVM的内存,以免出现OutOfMemory错误:
CC_OPTS="-Xms128m -Xmx256m"
四.配置dashboard-config.xml
dashboard用来显示cruisecontrol管理的所有项目的构建状态信息。
dashboard-config.xml用来配置dashboard的显示,其中,配置
logsdir=""
artifactsdir="" />
五.运行cruisecontrol
1.给cruisecontrol.sh 添加执行权限
> chmod +x cruisecontrol.sh
2.运行 cruisecontrol.sh 脚本
> ./cruisecontrol.sh
六.查看项目构建结果
1.通过 访问项目构建结果。
其中,项目有三种状态:
Discontinued:表示CruiseControl可以找到该项目的日志文件,但在config.xml中并没有配置该项目,这种情况下CruiseControl不会去构建它。
Inactive:表示在config.xml中配置了该项目,但是没有发现关于这个项目的Log信息,即在CruiseControl的日志目录中还没有该项目的日志文件,或日志文件被人为删除了。CruiseControl会根据配置信息对这个项目进行检查新版本并进行构建。
Active:表示CruiseControl即可以找到该项目的日志文件,又在config.xml中可以发现它。此时,这个项目可能是构建成功,也可能是构建失败,还可能是构建中。
2.通过 查看项目构建计划