標籤:style blog http java 使用 os
CruiseControl是CIserver的老者,誕生已是多年,在很多方面,CruiseControlserver已經成為持續整合實踐的同義字。而如今,CruiseControl已發展成為一個家族式系統,包含CruiseControl.java、CruiseControl.net、CruiseControl.ruby等適應不同語言環境的實現,其強大的外掛程式和擴充能力也是諸多同類系統無法比你的。而在這裡,我僅僅介紹該家族的本家CruiseControl.java,即CruiseControl。CruiseControl是一個不錯的持續整合server,只是國內社區的普遍反應是:它的配置太麻煩,無從下手。從本篇文章開始,我將逐步介紹CruiseControl的環境搭建與配置,以及持續整合中的一些實踐。我們將從最簡單的使用方式(stand-alone)開始,以便您能夠高速開始您的持續整合之旅,而不必面對“千奇百怪”的問題。
好!先讓我們簡單搭建個持續整合server再說吧
一、我使用的CruiseControl版本號碼
- CruiseControl是一個java開源項目,我將以它近期的一個分支版本號碼來介紹它的使用。CruiseControl近期公布的版本號碼是V2.7.1。這個分支版本號碼就是在V2.7.1基礎之上。
- 這個分支版本號碼包括一個Dashboard,能夠方便地看到各項目的構建狀態。
- 這個分支版本號碼當然還支援多個Build Loop,你能夠在多個機器上部署獨立的Build Loop,從而建立你自己的Build Grid。
二、得到CruiseControl的分支版本號碼
要得到這個分支版本號碼,你能夠使用subversion不用不論什麼password從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 client軟體,由於在構建時,它會用到javahl。
在剛剛checkout出來的CruiseControl檔案夾下,有一個批次檔,名為release.bat。執行這個批次檔,你會在target檔案夾下發現一個壓縮檔,名這cruisecontrol-bin-2.7.2-dev.zip。將其解壓到一個檔案夾,我們這裡解壓到C盤根資料夾下。解壓後,檔案夾結構例如以下:
2. 直接使用已構建完畢的CruiseControl
假設你不想做這一步,也能夠在binaryrelease檔案夾下發現解壓後的檔案,把它們複製到對應的檔案夾下也能夠。
四、執行CruiseControl
CruiseControl能夠執行在多種應用server中,當然,它自己也捆綁了一個開源應用server,那就是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的設定檔,為您增加自己的構建項目做準備。