CruiseControl部署实践
CruiseControl介绍CruiseControl(简称CC)是使用java语言编写的一个持续集成工具,有良好的框架,可以在其基础上二次开发成我们自己定制的持续集成工具。CruiseControl集成了很多插件如:源码控制、邮件通知、实时消息通知等等。而且他提供了一个web界面使我们更加方便的查看构建项目的当前以及历史状态。虽然CruiseControl使用java语言编写,但并不限制只构建JAVA项目,也可以通过ant等脚本构建各种语言的持续集成环境。在这里主要参考一些文档部署了自己的一个Java project,下面简单介绍一下过程。
CruiseControl环境配置
1. 从官方站点http://cruisecontrol.sourceforge.net/download.html下载一份最新的 CC 压缩包,最新的版本号为2.8.4。将cruisecontrol-bin-2.8.4.zip 直接解压到D盘下,文件结构如下图:
2. 安装JDK。CC需要运行在至少JDK 1.4环境中,我安装的是1.6(注意:安装1.7会报错不能运行)。在环境变量中设置JAVA_HOME值为C:\Program Files\Java\jdk1.6.0_10,将C:\Program Files\Java\jre6\bin加到path中。
3. 安装Subversion。一开始部署完CC运行时总抛错,大概意思是svn不能执行,然后发现自己电脑上只安装TortoiseSVN没有安装SVN,这样在局域网内用用还是可以的。另外如果两个都安装了但是版本不配也会报错,我的 TortoiseSVN版本是1.7.5,安了个1.6.6的SVN还是运行不起来,提醒说必须要1.7.0以上,同上将Subversion\bin加到path中。
4. 运行根目录下的cruisecontrol.bat。在浏览器中输入:http://localhost:8080/dashboard/,出现下图表示安装成功
5. 从SVN仓库中checkout出源码。CruiseControl第一次不支持自动检出代码,所以在构建项目之前要先把项目代码手工checkout到本地。工程代码是放在Google Code上面(Google Code用的是SVN ),名称是project_test,源文件放在trunk目录下。将代码检出到cruisecontrol-bin-2.8.4/projects/ project_test 目录下,保证该目录下可以找到名为build.xml文件。build文件内容:(调用ANT执行集成流程,包括清空目录、编译、休眠、打包)
<project name="project_test" default="all" basedir=".">
<property file="build.properties"/>
<path id="project.classpath">
<pathelement location="${svnjavahl.jar}" />
<pathelement location="${svnant.jar}" />
<pathelement location="${svnClientAdapter.jar}" />
</path>
<target name="all" depends="clean, compile, sleep, jar"/>
<target name="clean">
<delete dir="target" quiet="true" />
</target>
<target name="compile" >
<mkdir dir="target/classes"/>
<javac srcdir="src" destdir="target/classes">
<classpath>
<pathelement location="build/lib/${app.name}.jar" />
<pathelement path="${basedir}/lib" />
</classpath>
</javac>
</target>
<target name="sleep">
<echo message="Sleeping for a while so you can see the build in the new dashboard" />
<sleep seconds="5" />
</target>
<target name="jar" depends="compile">
<jar jarfile="target/project_test.jar" basedir="target/classes"/>
</target>
</project>
6. 修改配置文件。将下面的代码段加入到config.xml文件中,位于<CruiseControl>节点下。
<project name="project_test">#一定要与projects目录下的项目名相同
<listeners>
<currentbuildstatuslistener file="logs/${project.name}/status.txt"/>
</listeners>
<bootstrappers>
<svnbootstrapper localWorkingCopy="projects/${project.name}" />
</bootstrappers>
<modificationset quietperiod="30">
<svn localWorkingCopy="projects/${project.name}"/>
</modificationset>
<schedule interval="300">
<ant anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build.xml"/>
<exec command="D:\cruisecontrol-bin-2.8.4\cruisecontrol.bat" />
</schedule>
<log>
<merge dir="projects/${project.name}/target/test-results"/>
</log>
<publishers>
<onsuccess>
<artifactspublisher dest="artifacts/${project.name}" file="projects/${project.name}/target/${project.name}.jar"
/>
</onsuccess>
<email buildresultsurl="http://localhost:8080/cruisecontrol/buildresults/${project.name}" mailhost="smtp.163.com"
mailport="25" defaultsuffix="@163.com" username="tester000001@163.com" password="qatest11112" returnname="CruiseControl" skipusers="true" spamwhilebroken="true" returnaddress="tester000001@163.com">
<always address="tester000001@163.com" />
</email> #简单设置了一下发送结果邮件
</publishers>
</project>
7. 保存之后坐等看结果。根据上面的配置,五分钟后CC会做新一轮的检查与构建,将新的project加进去,如下:
邮件:
8. 对于配置及监控方面的问题后续研究
补充:软件开发 , Java ,