注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

网易杭州 QA Team

务实 专注 分享 做有态度的QA

 
 
 
 
 

日志

 
 

CruiseControl 部署实践  

来自sundd   2012-11-29 21:50:45|  分类: 流程相关 |举报 |字号 订阅

  下载LOFTER 我的照片书  |

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盘下,文件结构如下图:

CruiseControl 部署实践 - 网易杭州QA - 网易杭州 QA Team
 

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/,出现下图表示安装成功

CruiseControl 部署实践 - 网易杭州QA - 网易杭州 QA Team
 

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加进去,如下:

CruiseControl 部署实践 - 网易杭州QA - 网易杭州 QA Team
 邮件:
CruiseControl 部署实践 - 网易杭州QA - 网易杭州 QA Team
 
构建结果:
CruiseControl 部署实践 - 网易杭州QA - 网易杭州 QA Team
 

8. 对于配置及监控方面的问题后续研究


  评论这张
 
阅读(745)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016