CruiseControl读书笔记(一)

CruiseControl:简称CC,持续集成工具,主要提供了基于版本管理工具(如CVS)感知变化或每天定时的持续集成,并提供持续集成报告、Email、Jabber等等方式通知相关负责人,其要求是需要进行日构建的项目已编写好全自动的项目编译脚本(可基于Maven或Ant)。

在这里以一个项目来简要的说说cc的使用,通常项目对于日构建的类型的需求分为两种:
1、每天的定时自动集成。
2、感知版本管理工具中的变化而进行自动集成。

项目对于日构建的目标通常为:
1、感知版本管理工具的变化,如发现有变化,则进行集成。
2、调用项目编译脚本进行项目集成。
3、合并项目编译脚本产生的单元测试、功能测试的日志。
4、将集成报告发布至网站中。
5、将集成的结果以邮件、jabber等等方式通知相应的负责人。

Configuration Reference(config.xml文件)
<cruisecontrol>
   <property/>
   <include.projects/>
   <system>
      <configuration>
         <threads/>
      </configuration>
   </system>
   <plugin/>
   <project>
      <property/>
      <plugin/>
      <dateformat/>
      <labelincrementer/>
      <listeners>
         <cmsynergysessionmonitor/>
         <currentbuildstatusftplistener/>
         <currentbuildstatuslistener/>
         <currentbuildstatuspagelistener/>
         <lockfilelistener/>
      </listeners>
      <bootstrappers>
         <accurevbootstrapper/>
         <alienbrainbootstrapper/>
         <antbootstrapper/>
         <clearcasebootstrapper/>
         <clearcaseviewstrapper/>
         <cmsynergybootstrapper/>
         <currentbuildstatusbootstrapper/>
         <currentbuildstatusftpbootstrapper/>
         <cvsbootstrapper/>
         <execbootstrapper/>
         <harvestbootstrapper/>
         <lockfilebootstrapper/>
         <p4bootstrapper/>
         <plasticscmbootstrapper/>
         <snapshotcmbootstrapper/>
         <starteambootstrapper/>
         <surroundbootstrapper/>
         <svnbootstrapper/>
         <tfsbootstrapper/>
         <vssbootstrapper/>
      </bootstrappers>
      <modificationset>
         <accurev>
         <alienbrain/>
         <alwaysbuild/>
         <buildstatus/>
         <clearcase/>
         <cmsynergy/>
         <compound>
            <targets/>
            <triggers/>
         </compound>
         <cvs/>
         <darcs/>
         <filesystem/>
         <forceonly/>
         <harvest/>
         <httpfile/>
         <mavensnapshotdependency/>
         <maven2snapshotdependency/>
         <mks/>
         <p4/>
         <plasticscm/>
         <pvcs/>
         <snapshotcm/>
         <starteam/>
         <surround/>
         <svn/>
         <tfs/>
         <timebuild>
         <ucm>
         <veto/>
         <vss/>
         <vssjournal/>
      </modificationset>
      <schedule>
         <ant/>
         <maven/>
         <maven2/>
         <pause/>
         <nant/>
         <phing/>
         <exec/>
         <composite/>
      </schedule>
      <log>
         <merge/>
  <gzip/>
  <delete/>
      </log>
      <publishers>
         <antpublisher/>
         <artifactspublisher/>
         <clearcasebaselinepublisher/>
         <cmsynergybaselinepublisher/>
         <cmsynergytaskpublisher/>
         <compoundpublisher/>
         <currentbuildstatuspublisher/>
         <currentbuildstatusftppublisher/>
         <email/>
         <execute/>
         <ftppublisher/>
         <htmlemail/>
         <jabber/>
         <onfailure/>
         <onsuccess/>
         <rss/>
         <sametimeannouncement/>
         <scp/>
         <sfeedocman/>
         <sfeefrs/>
         <sfeetracker/>
         <socket/>
         <weblog>
         <x10/>
         <xsltlogpublisher/>
         <yahoopublisher/>
      </publishers>
   </project>
</cruisecontrol>

示例:
<cruisecontrol>
  <project name="hello">
   <listeners>
     <currentbuildstatuslistener file="logs/hello/status.txt" />
   </listeners>

   <!-- 启动任务Plugin的容器,用于定义构建任务启动前需要执行的任务 -->
   <bootstrappers>
     <cvsbootstrapper localWorkingCopy="projects/hello" />
   </bootstrappers>

   <!-- 用于告诉CruiseControl是否需要构建项目,即配置管理库的代码是否存在更新,如果更新则自动执行下面的build.xml。属性requiremodification告诉CruiseControl,在配置管理库没有代码更新的情况下,是否需要构建。缺省为"true",即没有更新则无须进行构建;属性quietperiod告诉CruiseControl,最新一次代码提交后CruiseControl需要等待的时间(秒),用于防止CruiseControl在开发人员提交代码时进行项目构建,缺省为"60"秒。 -->
   <modificationset quietperiod="30" > 
     <cvs localWorkingCopy="projects/hello"/>
     <cvs localWorkingCopy="projects/hello/main/src/java/com/test/qik"/>
   </modificationset>

   <!-- 每隔多长时间(秒)启动一次构建任务。可选的属性interval,用于定义以秒为单位的时间间隔,缺省为"300"秒。 -->
   <schedule interval="30" >
     <ant anthome="apache-ant-1.6.3"
       buildfile="projects/hello/build.xml"
       target="CI"/><!-- 构建时执行的build.xml -->
   </schedule>

   <!-- 设定CruiseControl日志文件的存放目录 -->
   <log>
    <merge dir="projects/hello/test-reports"/>
   </log>

   <!-- 指定构建任务结束后,CruiseControl如何发布项目构建结果。项目构建结果的发布方式可以是Email,网页,复制代码库到指定的目录,或是发布代码库到FTP服务器等等。 -->
   <publishers>
    <artifactspublisher dest="artifacts" file="projects/hello/target/hello.jar"/>
   </publishers><!-- 发布jar包的位置,我都是在build.xml中将jar包打好放在这个位置 -->
  </project>
</cruisecontrol>

参考网文:CruiseContol:持续集成工具(虽然原有的版本比较老了,但是参考一下也是很不错的~~)

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值