CruiseControl是CI伺服器的老者,誕生已是多年,在許多方面,CruiseControl伺服器已經成為持續整合實踐的同義字。而現在,CruiseControl已發展成為一個家族式系統,包括CruiseControl.java、CruiseControl.net、CruiseControl.ruby等適應不同語言環境的實現,其強大的外掛程式和擴充能力也是諸多同類系統無法比你的。而在這裡,我只介紹該家族的本家CruiseControl.java,即CruiseControl。CruiseControl是一個不錯的持續整合伺服器,不過國內社區的普遍反應是:它的配置太麻煩,無從下手。從本篇文章開始,我將逐步介紹CruiseControl的環境搭建與配置,以及持續整合中的一些實踐。我們將從最簡單的使用方式(stand-alone)開始,以便您可以快速開始您的持續整合之旅,而不必面對“千奇百怪”的問題。
好!先讓我們簡單搭建個持續整合伺服器再說吧
一、我使用的CruiseControl版本
- CruiseControl是一個java開源項目,我將以它最近的一個分支版本來介紹它的使用。CruiseControl最近發布的版本是V2.7.1。這個分支版本就是在V2.7.1基礎之上。
- 這個分支版本包含一個Dashboard,可以方便地看到各項目的構建狀態。
- 這個分支版本當然還支援多個Build Loop,你可以在多個機器上部署獨立的Build Loop,從而建立你自己的Build Grid。
二、得到CruiseControl的分支版本
要得到這個分支版本,你可以使用subversion不用任何密碼從CruiseControl的Repository中檢出。命令如下:
svn checkout https://cruisecontrol.svn.sourceforge.net/svnroot/cruisecontrol/branches/cce/cruisecontrol/
三、構建CruiseControl
0. 你機器上至少要安裝有JAVA 1.4,並在環境變數中設定有JAVA_HOME,並把java/bin加入到path中。CruiseControl內建了ANT,所以不用事先安裝。
- 從原始碼中構建CruiseControl
如果從源碼中構建CruiseControl,要確保你的機器可以訪問互連網。因為構建過程中要檢查一些license。另外,最好有SVN 用戶端軟體,因為在構建時,它會用到javahl。
在剛剛checkout出來的CruiseControl目錄下,有一個批次檔,名為release.bat。運行這個批次檔,你會在target目錄下發現一個壓縮檔,名這cruisecontrol-bin-2.7.2-dev.zip。將其解壓到一個目錄,我們這裡解壓到C盤根目錄下。解壓後,目錄結構如下:
2. 直接使用已構建完成的CruiseControl
如果你不想做這一步,也可以在binaryrelease目錄下發現解壓後的檔案,把它們拷貝到相應的目錄下也可以。
四、運行CruiseControl
CruiseControl可以運行在多種應用伺服器中,當然,它自己也捆綁了一個開源應用伺服器,那就是Jetty 6。為了儘快建立我們的環境,我們這裡暫時使用它自己捆綁的Jetty,快速開始我們的持續整合之旅。
直接運行CruiseControl目錄下的CruiseControl.bat,它會自行啟動Jetty6,當從Console中看到它啟動完畢後,你就可以在瀏覽器中訪問http://localhost:8080/dashboard,此時你會看到一個名為connectFour的樣本項目在Dashboard上顯示了。
(如果你足夠快的話,你會發現Dashboard 上的小方塊是從灰色變成深綠色的。為什麼呢?我們以後再說。)
“綠色”表示該項目構建通過。如果要是有多重專案的話,應該看到多個小方塊。
點擊“Builds” Tab頁,就到了 Builds 頁。這一頁會以列表的方式顯示所有的項目。當前只有一個項目,所以在列表中只有一行,如所示:
在該頁面上點擊某個項目時,會開啟Build Detail頁,顯示該項目最近一次Build的資訊。頁面右側是該項目所有曆史構建資訊。你會發現,這時connectFour項目有兩個構建曆史版本,一個是剛剛構建完成的,另一個是兩年前的構建。這些資訊是來自於CruiseControl對該項目的記錄檔。此時,點擊這兩個構建結果中的任何一個,都會開啟該次構建的Build Detail頁面,顯示相關的構建曆史資訊。如所示:
我們將在下一篇文章中簡要介紹CruiseControl的設定檔,為您加入自己的構建項目做準備。