1 Cruisecontrol的概述
CruiseControl是一种持续集成过程的框架,包括了邮件通知, ant和各种源码控制工具的插件。并提供 web接口,用于查看当前和以前的 build的结果。
2 Cruisecontrol的安装
2.1
下载
CruiseControl
CruiseControl目前提供的是源码,需要我们手工进行创建。
2.2
创建安装目录
把 CruiseControl源码拷贝到特定目录该目录为 INSTALL_DIR,该目录下有三个子目录 docs, main, reporting。
2.3
设置环境变量
将 INSTALL_DIR\main\bin添加到系统的环境变量 PATH中去。
2.4
创建工作目录
创建工作目录为 D:\CC-WORKSPACE,下面称之为 WORK_DIR
WORK_DIR\logs CC的 build loop过程中产生日志所在目录 WORK_DIR\artifacts CC在 build loop过程中产生需要保存的一些
文件所在目录
这步不是官方文挡要求的,但构建良好的目录结构对于开发和配置都非常重要。
3 Cruisecontrol的配置
3.1 reporting部分的配置
reporting部分的配置分三个步骤,修改jsp,创建override.properties,打包reporting部分文件并在weblogic上部署。
修改 INSTALL_DIR\reporting\jsp\buildresults.jsp文件,将
<%@ taglib uri="/WEB-INF/cruisecontrol-jsp11.tld" prefix="cruisecontrol"%>
修改为
<%@ taglib uri="/WEB-INF/cruisecontrol-jsp12.tld" prefix="cruisecontrol"%>
3.1.2 创建override.properties
在 INSTALL_DIR\reporting\jsp 目录下创建 override.properties文件,
内容如下:
user.log.dir=D:\\CC-WORKSPACE\\logs
user.build.status.file=status.txt
cruise.build.artifacts.dir=D:\\CC-WORKSPACE\\artifacts
执行 INSTALL_DIR\reporting\jsp目录下的 build.bat文件,执行成功后在 dist目录下找到 cruisecontrol.war文件,并将该文件部署到 weblogic上, Weblogic部署部分我就不写了。
3.2
Mian部分配置
Mian部分配置只有一步,就是创建 config.xml文件。
在工作目录( work_dir)下创建两个文件 congfig.xml和 startcc.bat文件, config.xml文件是必须的, startcc文件是可选,因为 startcc.bat纯粹是为了启动 cc方便而创建的文件。
Startcc.bat文件内容如下:
cruisecontrol -port 8000
很短,但使用起来很方便,双击一下就启动 cc 了。 ;-)
config.xml是由 cc规定一些 xml标签组成,我对一些常用的标签说明一下,
具体还要去看
cc
提供的官方文档( INSTALL_DIR/doc)。
l
<project/> 定义一个项目
l
<bootstrappers>
<currentbuildstatusbootstrapper file="logs\first\status.txt" />
</bootstrappers>
定义 build状态的日志文件。
l
<modificationset requiremodification="false" quietperiod="60" >
<vss ssdir="D:\vss\win32" //注意:ssdir中不能有空格
login="fengtianhao,fengtianhao" //用户明,密码
vsspath="/devtest" //项目路径
serverPath="D:\Program Files\vss" //就是包含srcsafe.ini的目录
dateformat="yy-MM-dd" //vss的日期格式
timeformat="HH:mm" //vss的时间格式
/>
</modificationset>
检查 vss文件系统是否有变化,如果有,则在 web页面显示变化过的文件名。
l
<schedule interval="60" >
定义 build时间间隔为 60秒
<ant buildfile="build.xml" antscript="D:\ant\bin\ant.bat" target="deploy.app" time="1916" antworkingdir="D:\new97_prj\NEW97_PRJ" uselogger="false">
<jvmarg arg="-server" />
<jvmarg arg="-Xms64m" />
<jvmarg arg="-Xmx256m" />
</ant>
指定 ant 的相关信息。 buildfile定义 build所需要的 build.xml文件, antscript指定 ant的启动脚本, antworkingdir指定 ant的工作, target指定本次的 build的目标, time指定 build目标的运行时间( time也可以换成 multiple,两者只能取其一)。 <jvmarg>指定 cc运行时的最大和最小内存。
</schedule>
l
<log dir="logs\first">
<merge dir="jsp\target\testresults"/>
</log>
log标签的dir属性指定日志目录。merge标签的dir属性指定需要被合并文件的路径,指定路径下的文件将会与日志文件合并,一般需要合并的文件是测试结果文件,这需要注意的地方是指定路径下的文件都要被合并到日志文件中,也就是说,为了不影响cc的日志文件的准确性,在生成每次的测试结果之前需要先把上次的测试结果删除。
l
<publishers>
<artifactspublisher dest="artifacts\first" dir="jsp\target\testresults"/>
</publishers>
publishers的功能主要是发布 build结果,例如邮件通知等,我们主要用到的功能是 artifactspublisher所定义的功能,也就是 cc在 build过程中产生的文件发布。在 merge标签中我们已经知道,测试日志是 cc在 build过程中产生的文件,而且我们每次我们都要删除上次的测试结果,这里 cc提供了一种机制让你保存测试结果,就是利用 artifactspublisher标签。
Dest定义目标目录,dir定义文件存储的起始目录。所有的文件会被cc从dir目录copy到dest目录。被copy到dest目录的文件会放在以当前时间命名的文件夹中。这里dir定义的是测试日志文件的所在目录。