CruiseControl :简称 CC ,持续集成工具(集成测试工具),主要提供了基于版本管理工具 ( 如 CVS、VSS、SVN) 感知变化或每天定时的持续集成,并提供持续集成报告、 Email 、 Jabber 等等方式通知相关负责人,其要求是需要进行日构建的项目已编写好全自动的项目编译脚本 ( 可基于 Maven 或 Ant) 。
cruisecontrol+svn:在这之前要确定你的svn终端命令可以用,要先下个subversion(版本控制服务器)
Subversion和TortoiseSVN安装与配置
Subversion为版本控制软件的服务器端。
TortoiseSVN为版本控制软件的客户端。
1。下载Subversion与TortoiseSVN。
Subversion的地址:http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91
我选择的是[Setup-Subversion-1.5.3.msi]Windows安装程序包。
TortoiseSVN的地址:http://tortoisesvn.net/downloads
[TortoiseSVN-1.5.5.14361-win32-svn-1.5.4.msi]Windows安装程序包。
如果不是安装subversion版本控制的话(就是安装服务器),只用在环境变量里面加入D:\subversion\bin就好了,这时可以检测一下:在终端里面输入svn,看可不可以,如果要安装subversion,见:http://blog.csdn.net/ieclipse/archive/2008/12/17/3539706.aspx
下面可以开始cruisecontrol的配置了,下个cruisecontrol的包,最好下cruisecontrol-bin-2.3.1.zip(bin包),然后解压:这里比如把要监控的对像放到cruisecontrol下的projects下的myrobot下面,先check out下一份下来然后:
用编辑器打开cruisecontrol.sh或cruisecontrol.bat ,在下面这段代码中修改端口号,将8080修改为7070或其他:
$LIBDIR" -jar "$LAUNCHER" $@ -jmxport 7000 -webport 7070 -rmiport 1099 &
修改curisecontrol的config.xml:
<cruisecontrol>
<project name="myrobot">
<listeners>
<currentbuildstatuslistener file="logs/${project.name}/status.txt"/>
</listeners>
<bootstrappers>
</bootstrappers>
<modificationset quietperiod="30">
<svn localworkingcopy="projects\myrobot"/>
</modificationset>
<!-- 这里设置interval="300",这意味着CruiseControl每隔5分钟使用<modificationset>定义的任务检查一次代码库。如果本地跟版本库不一样的话就执行schedule,如果一样的话就不执行 -->
<schedule interval="300">
<ant anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build.xml" target="force.deploy"/>
</schedule>
<log>
<merge dir="projects/${project.name}/logs"/>
</log>
<publishers>
<htmlemail
buildresultsurl="http://127.0.0.1:7070/cruisecontrol/buildresults/myrobot"
(上面的url地址可以先进入http://127.0.0.1:7070/cruisecontrol查看你的项目的地址)
mailhost="smtp.gmail.com" username="aaa@gmail.com" password="123456"
returnaddress="aaa@gmail.com" skipusers="true" subjectprefix="[Cruise Control]"
logdir="D:\curisecontrol\cruisecontrol-bin-2.8.4\projects\myrobot\logs" >
<always address="aaa@goodhope.net"/>
</htmlemail>
</publishers>
</project>
</cruisecontrol>
要监控多个项目就加入多个project,
<cruisecontrol>
是配置文件的根元素,它可以拥有一个或多个
<project>
元素是一个完整的build任务,包括检查配置管理库是否有新的修改,构建项目并发布项目构建结果。它告诉 CruiseControl构建什么,何时构建,如何构建以及如何发布构建报告。它有一个必需的属性name和一个可选属性 buildafterfailed。
属性buildafterfailed定义了当构建失败时,是否要继续进行,缺省是"true"。
<dateformat>
用于定义日期的格式,缺省格式是:MM/dd/yyyy HH:mm:ss。
1.
<bootstrappers>
<antbootstrapper anthome="apache-ant-1.7.0" buildfile="projects/${project.name} /build.xml" target="force.deploy" />
<svnbootstrapper localWorkingCopy="projects/myrobot/" />
</bootstrappers>
,用于在项目构建开始前从CVS服务器上update指定的文件。通常可以用于更新项目的构建脚本。属性 localWorkingCopy指定CVS本地工作目录,属性file指定需要update的文件名,相对于属性localWorkingCopy指定 的目录。
属性requiremodification告诉CruiseControl,在配置管理库没有代码更新的情况下,是否需要构建。缺省为"true",即没有更新则无须进行构建。
属性quietperiod告诉CruiseControl,最新一次代码提交后CruiseControl需要等待的时间(秒)。用于防止CruiseControl在开发人员提交代码时进行项目构建。缺省为"60"秒。
在本例中使用
到目前为止,以上的配置文件内容已经定义了CruiseControl构建什么以及何时构建。
在本例中,属性interval设为"3600",这意味着CruiseControl每隔一个小时使用
在本例中,antWorkingDir属性设定Ant的工作目录,buildfile属性设定构建脚本build file的目录。
属性multiple告诉CruiseControl每隔几次执行一次本
除此之外,还可以指定Ant的运行时间(time属性),build file的target(target属性,不设定则为build file的缺省target)。
请参见CruiseControl的配置文档(位于${CruiseControl_Home}/main/docs目录下)。
在本例中,共有
本例中
check out下来的版本还要修改build.xml:
<project name="myRobot" basedir="." default="all">
。。。。。。。。。。。。。。。。(省略)
<target name="force.deploy" description="force.deploy">
<exec executable="svn">
<arg line="update" />
</exec>
<antcall target="--deploy">
</antcall>
</target>
</project>
(机器上第一次checkout的时候输入svn的地址就行了,之后在终端update或者checkout的时候只用svn update,不用再指定地址,所以第一次的checkout一般是要自己来做的,或者也可以指定地址让ant来帮你做)