下一個工作是下載 CruiseControl(請參閱 參考資料)并把它安裝在 pkg 目錄中:
[cruise@fcvm pkg]$ wget -q http://heanet.dl.sourceforge.net/\ sourceforge/cruisecontrol/cruisecontrol-2.2.1.zip [cruise@fcvm pkg]$ unzip cruisecontrol-2.2.1.zip Archive: cruisecontrol-2.2.1.zip creating: cruisecontrol-2.2.1/ creating: cruisecontrol-2.2.1/contrib/ [...] inflating: cruisecontrol-2.2.1/reporting/jsp/webcontent/xsl/testdeta ils.xsl inflating: cruisecontrol-2.2.1/reporting/jsp/webcontent/xsl/unittest s.xsl [cruise@fcvm pkg]$ rm cruisecontrol-2.2.1.zip [cruise@fcvm pkg]$ |
不需要構建 CruiseControl,因為發行包中包含一個預先構建好的 JAR 文件。
現在可以讓第一個自動構建工作了。這里將采用 XStream 項目的源樹作為初始示例(請參閱 參考資料)。稍后 您將會學習到如何添加來自本地和遠程源代碼倉庫的更多項目。CruiseControl 從自己的啟動目錄中叫作 config.xml 的文件中讀取要構建的項目的信息。在本文的安裝中,這個目錄是 /home/cruise。清單 1 顯示了一個簡單的 config.xml 文件的內容,可以從它開始。要創建它,只要把清單 1 中的文本拷貝到一個新文件就可以了:
清單 1. 構建 XStream 的簡單的 CruiseControl config.xml 文件
<?xml version="1.0"?> <cruisecontrol> <project name="xstream" buildafterfailed="false"> <listeners> <currentbuildstatuslistener file="log/build/xstream/status.txt"/> </listeners> <modificationset> <filesystem folder="/home/cruise/force-build/xstream"/> <svn LocalWorkingCopy="src/xstream"/> </modificationset> <schedule interval="3600"> <ant antscript="/usr/bin/ant" uselogger="true" antworkingdir="src/xstream" multiple="1" target="library"/> <ant antscript="/usr/bin/ant" uselogger="true" antworkingdir="src/xstream" multiple="5" target="clean library"/> </schedule> <log dir="log/build/xstream"/> <dateformat format="dd/MM/yyyy HH:mm:ss"/> </project> </cruisecontrol> |
配置文件向 CruiseControl 提供了關于要構建的每個項目的三部分主要信息:
- 如何構建項目,在
<schedule>
元素中指定:- 每 3,600 秒(即每小時)構建項目一次。
- 用 Ant 進行構建過程。
- 每進行到第 5 次構建時,清理構建制品(類文件以及前面構建中的類似內容)的源樹。
- 如何檢測什么時候 應當 構建項目,在
<modificationset>
元素中指定:- 用 Subversion(
svn
)檢查源樹的本地工作拷貝是否過期。(如果源代碼沒有變化,就不需要構建。) - 檢測強制構建目錄中叫作 xstream 的文件的時間戳。這樣即使源樹沒有變化,也可以手動強制進行下一次安排的構建。(在這篇文章后面,我將多次談到可能需要這種手工覆蓋。)
- 用 Subversion(
- 對構建的結果要做什么,在
<listeners>
和<log>
元素中指定:- 把構建過程的輸出放在 log/build/xstream 目錄中加了時間戳的文件中。
- 把構建的整體狀態寫入這個目錄中的一個文件。
現在需要從 XStream 項目的 Subversion 倉庫中簽出 XStream 源樹。為了保持一致,請把所有源樹簽出為 /home/cruise/src 的子目錄,并把 XStream 源樹放在 src/xstream 中,就像 config.xml 文件所指定的那樣:
[cruise@fcvm pkg]$ cd [cruise@fcvm ~]$ mkdir src [cruise@fcvm ~]$ cd src [cruise@fcvm src]$ svn co https://svn.codehaus.org/\ xstream/trunk/xstream A xstream/LICENSE.txt A xstream/continuous-integration.xml [...] A xstream/build.xml U xstream Checked out revision 614. [cruise@fcvm src]$ |
然后,設置強制構建子目錄:
[cruise@fcvm src]$ cd .. [cruise@fcvm ~]$ mkdir force-build [cruise@fcvm ~]$ touch force-build/xstream [cruise@fcvm ~]$ |
最后這一步是必需的,因為如果 config.xml 文件的 <filesystem>
元素中指定的文件不存在,CruiseControl 會拒絕啟動。
現在構建工作可能沒有正常工作,也有可能遺漏了一些依賴項。所以這個時候,應當做一些手動檢查,確保能夠成功構建 XStream 源樹:
![]() |
|
[cruise@fcvm ~]$ cd src/xstream [cruise@fcvm xstream]$ ant library Buildfile: build.xml compile: [mkdir] Created dir: /home/cruise/src/xstream/build/java [echo] Java version used for compile: 1.4.2_08 [javac] Compiling 150 source files to /home/cruise/src/xstream/bui ld/java [...] library: BUILD SUCCESSFUL Total time: 1 minute 44 seconds [cruise@fcvm xstream]$ |
而且,在添加新項目時,需要找到用來構建源和清理其中制品的目標的名稱。必須把這個信息放在 config.xml 文件中。
現在應當做好準備,可以讓 CruiseControl 自動執行這個構建了。只要啟動 CruiseControl,然后坐下來等待就可以了:
[cruise@fcvm xstream]$ cd [cruise@fcvm ~]$ java -jar \ pkg/cruisecontrol-2.2.1/main/dist/cruisecontrol.jar [cc]Aug-24 20:09:31 Main - CruiseControl Version 2.2.1 [cc]Aug-24 20:09:32 trolController- projectName = [xstream] [cc]Aug-24 20:09:32 trolController- No previously serialized project f ound: /home/cruise/xstream [cc]Aug-24 20:09:32 Project - Project xstream: reading settings from config file [/home/cruise/config.xml] [cc]Aug-24 20:09:32 BuildQueue - BuildQueue started [cc]Aug-24 20:09:32 Project - Project xstream starting [cc]Aug-24 20:09:32 Project - Project xstream: idle [cc]Aug-24 20:09:32 Project - Project xstream started [cc]Aug-24 20:09:32 Project - Project xstream: next build in 1 hours [cc]Aug-24 20:09:32 Project - Project xstream: waiting for next time to build [cc]Aug-24 21:09:33 Project - Project xstream: in build queue [cc]Aug-24 21:09:33 BuildQueue - now adding to the thread queue: xs tream [cc]Aug-24 21:09:33 Project - Project xstream: reading settings from config file [/home/cruise/config.xml] [cc]Aug-24 21:09:33 Project - Project xstream: bootstrapping [cc]Aug-24 21:09:33 Project - Project xstream: checking for mod ifications [cc]Aug-24 21:09:59 Project - Project xstream: No modifications found, build not necessary. [cc]Aug-24 21:09:59 Project - Project xstream: Building anyway, since build was explicitly forced. [cc]Aug-24 21:09:59 Project - Project xstream: now building Buildfile: build.xml [cc]Aug-24 21:11:29 Project - Project xstream: merging accumula ted log files [cc]Aug-24 21:11:30 Project - Project xstream: build successful [cc]Aug-24 21:11:30 Project - Project xstream: publishing build results [cc]Aug-24 21:11:30 Project - Project xstream: idle [cc]Aug-24 21:11:30 Project - Project xstream: next build in 1 hours [cc]Aug-24 21:11:30 Project - Project xstream: waiting for next time to build [stop CruiseControl using Ctrl-C] [cruise@fcvm ~]$ |
文章來源于領測軟件測試網 http://www.kjueaiud.com/