CruiseControl:简称CC,持续集成工具,主要提供了基于版本管理工具(如CVS)感知变化或每天定时的持续集成,并提供持续集成报告、Email、Jabber等等方式通知相关负责人,其要求是需要进行日构建的项目已编写好全自动的项目编译脚本(可基于Maven或Ant)。
  在这里以一个项目来简要的说说cc的使用,通常项目对于日构建的类型的需求分为两种: 1、每天的定时自动集成。 2、感知版本管理工具中的变化而进行自动集成。
  项目对于日构建的目标通常为: 1、感知版本管理工具的变化,如发现有变化,则进行集成。 2、调用项目编译脚本进行项目集成。 3、合并项目编译脚本产生的单元测试、功能测试的日志。 4、将集成报告发布至网站中。 5、将集成的结果以邮件、jabber等等方式通知相应的负责人。
  基于上面的要求,项目编译脚本采用Maven,版本管理工具采用CVS,持续集成工具采用CC,假设已编写好了基于Maven的项目编译脚本,CruiseControl的脚本如下编写: <?xml version="1.0" encoding="UTF-8"?> <cruisecontrol>   <project name="demo" buildafterfailed="true">     <!-- 每次检测是否有变化时先运行此处 -->     <bootstrappers>       <currentbuildstatusbootstrapper file="logs/demo/buildstatus.txt"/>  </bootstrappers> 
    <!-- 检测是否有变化,如有变化则开始集成 -->      <modificationset quietperiod="10">            <!-- 基于cvs的检测 -->            <cvs localworkingcopy="demo"/>     </modificationset> 
    <!-- 持续集成-->      <schedule interval="18">    <!-- 项目的编译脚本 -->     <maven mavenscript="D:/tools/maven/bin/maven.bat"     projectfile="demo/project.xml"     goal="demo:build"/>     </schedule> 
    <!-- 持续集成过程的日志记录以及需要合并的日志 -->      <log dir="logs/demo">     <!-- 合并项目编译脚本中产生的单元、功能测试日志 -->   <merge dir="demo/target/test-reports"/>  </log> 
    <!-- 持续集成后结果的公布 -->      <publishers>        <currentbuildstatuspublisher file="logs/demo/buildstatus.txt"/>       <!-- 发布持续集成的结果至网站中,此方法还不是最理想的 -->       <execute command="D:/tools/cc/reporting/jsp/build.bat war"/>       <!-- 邮件通知相关的负责人 -->       <email mailhost="smtp.yourdomain.com"         returnaddress="[email protected]"         skipusers="true"         reportsuccess="fixes"         subjectprefix="[CruiseControl]"         buildresultsurl="http://buildserver:8080/cruisecontrol/buildresults">         <failure address="[email protected]" />         <success address="[email protected]" />       </email>     </publishers>    </project>  </cruisecontrol>
  关于CC 的脚本中xml的规范、cc的安装和运行请参考CruiseControl的官方网站: cruisecontrol.sourceforge.net  
 
  |