当前位置:编程学习 > JAVA >>

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 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,