<b>1 Cruisecontrol的概述</b>
CruiseControl是一種持續內建過程的架構,包括了郵件通知,ant和各種源碼控制工具的插件。并提供web接口,用于檢視目前和以前的build的結果。
<b>2 Cruisecontrol的安裝</b>
2.1 下載下傳CruiseControl
CruiseControl目前提供的是源碼,需要我們手工進行建立。
2.2 建立安裝目錄
把CruiseControl源碼拷貝到特定目錄該目錄為INSTALL_DIR,該目錄下有三個子目錄docs,main,reporting。
2.3 設定環境變量
将INSTALL_DIR\main\bin添加到系統的環境變量PATH中去。
2.4 建立工作目錄
建立工作目錄為D:\CC-WORKSPACE,下面稱之為WORK_DIR
WORK_DIR\logs CC的build loop過程中産生日志所在目錄WORK_DIR\artifacts CC在build loop過程中産生需要儲存的一些檔案所在目錄
這步不是官方文擋要求的,但建構良好的目錄結構對于開發和配置都非常重要。
<b>3 Cruisecontrol的配置</b>
3.1 reporting部分的配置
reporting部分的配置分三個步驟,修改jsp,建立override.properties,打包reporting部分檔案并在weblogic上部署。
<b>3.1.1 修改jsp檔案</b>
修改INSTALL_DIR\reporting\jsp\buildresults.jsp檔案,将
<%@ taglib uri="/WEB-INF/cruisecontrol-jsp11.tld" prefix="cruisecontrol"%>
修改為
<%@ taglib uri="/WEB-INF/cruisecontrol-jsp12.tld" prefix="cruisecontrol"%>
<b>3.1.2 建立override.properties</b>
在INSTALL_DIR\reporting\jsp 目錄下建立override.properties檔案,
内容如下:
user.log.dir=D:\\CC-WORKSPACE\\logs
user.build.status.file=status.txt
cruise.build.artifacts.dir=D:\\CC-WORKSPACE\\artifacts
<b>3.1.3 打包web檔案</b>
執行INSTALL_DIR\reporting\jsp目錄下的build.bat檔案,執行成功後在dist目錄下找到cruisecontrol.war檔案,并将該檔案部署到weblogic上,Weblogic部署部分我就不寫了。
3.2 Mian部配置設定置
Mian部配置設定置隻有一步,就是建立config.xml檔案。
在工作目錄(work_dir)下建立兩個檔案congfig.xml和startcc.bat檔案,config.xml檔案是必須的,startcc檔案是可選,因為startcc.bat純粹是為了啟動cc友善而建立的檔案。
Startcc.bat檔案内容如下:
cruisecontrol -port 8000
很短,但使用起來很友善,輕按兩下一下就啟動cc 了。;-)
config.xml是由cc規定一些xml标簽組成,我對一些常用的标簽說明一下,具體還要去看cc提供的官方文檔(INSTALL_DIR/doc)。
l <project/> 定義一個項目
l <bootstrappers>
<currentbuildstatusbootstrapper file="logs\first\status.txt" />
</bootstrappers>
定義build狀态的日志檔案。
l <modificationset requiremodification="false" quietperiod="60" >
<vss ssdir="D:\vss\win32" //注意:ssdir中不能有空格
login="fengtianhao,fengtianhao" //使用者明,密碼
vsspath="/devtest" //項目路徑
serverPath="D:\Program Files\vss" //就是包含srcsafe.ini的目錄
dateformat="yy-MM-dd" //vss的日期格式
timeformat="HH:mm" //vss的時間格式
/>
</modificationset>
檢查vss檔案系統是否有變化,如果有,則在web頁面顯示變化過的檔案名。
l <schedule interval="60" >
定義build時間間隔為60秒
<ant buildfile="build.xml" antscript="D:\ant\bin\ant.bat" target="deploy.app" time="1916" antworkingdir="D:\new97_prj\NEW97_PRJ" uselogger="false">
<jvmarg arg="-server" />
<jvmarg arg="-Xms64m" />
<jvmarg arg="-Xmx256m" />
</ant>
指定ant 的相關資訊。buildfile定義build所需要的build.xml檔案,antscript指定ant的啟動腳本,antworkingdir指定ant的工作,target指定本次的build的目标,time指定build目标的運作時間(time也可以換成multiple,兩者隻能取其一)。<jvmarg>指定cc運作時的最大和最小記憶體。
</schedule>
l <log dir="logs\first">
<merge dir="jsp\target\testresults"/>
</log>
log标簽的dir屬性指定日志目錄。merge标簽的dir屬性指定需要被合并檔案的路徑,指定路徑下的檔案将會與日志檔案合并,一般需要合并的檔案是測試結果檔案,這需要注意的地方是指定路徑下的檔案都要被合并到日志檔案中,也就是說,為了不影響cc的日志檔案的準确性,在生成每次的測試結果之前需要先把上次的測試結果删除。
l <publishers>
<artifactspublisher dest="artifacts\first" dir="jsp\target\testresults"/>
</publishers>
publishers的功能主要是釋出build結果,例如郵件通知等,我們主要用到的功能是artifactspublisher所定義的功能,也就是cc在build過程中産生的檔案釋出。在merge标簽中我們已經知道,測試日志是cc在build過程中産生的檔案,而且我們每次我們都要删除上次的測試結果,這裡cc提供了一種機制讓你儲存測試結果,就是利用artifactspublisher标簽。
Dest定義目标目錄,dir定義檔案存儲的起始目錄。所有的檔案會被cc從dir目錄copy到dest目錄。被copy到dest目錄的檔案會放在以目前時間命名的檔案夾中。這裡dir定義的是測試日志檔案的所在目錄。