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="buildmaster@yourdomain.com"
skipusers="true"
reportsuccess="fixes"
subjectprefix="[CruiseControl]"
buildresultsurl="http://buildserver:8080/cruisecontrol/buildresults">
<failure address="developers@yourdomain.com" />
<success address="developers@yourdomain.com" />
</email>
</publishers>
</project>
</cruisecontrol>
關于CC 的腳本中xml的規范、cc的安裝和運行請參考CruiseControl的官方網站:
cruisecontrol.sourceforge.net