天天看點

搭建你的持續內建伺服器 - CruiseControl step by step(1)

   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頁面,顯示相關的建構曆史資訊。如下圖所示:

本文轉自 jasonteststudy 51CTO部落格,原文連結:http://blog.51cto.com/jasonteststudy/1543814