項目管理實踐三、每日構建【Daily Build Using CruiseControl.NET and MSBuild】

    在上一篇項目管理實踐二、源代碼控制【Source Control Using VisualSVN Server and TortoiseSVN】中我們已經講解了如何使用TortoiseSVN和VisualSVN Server來做簡單的版本控制,這一篇我們將會講解使用CruiseControl.NET和MSBuild來搭建每日構建系統。
    在第一篇項目管理實踐一、工欲善其事,必先利其器 中我們已經安裝了CruiseControl.NET 1.4,因爲我們還要用到MSBuild,所以如果你的系統沒有安裝Visual Studio,那麼你需要首先安裝Visual Studio 2005/2008,我們在這裏使用的是Visual Studio 2008,準備好這些了嗎?OK,我們正式開始今天的課程! 
    首先,我們要配置CruiseControl.NET【下面簡寫爲CCNET】,配置完成後,我們每次提交源代碼到SVN服務器後,CCNET就可以自動從SVN服務器上籤出源代碼,並調用MSBuild自動進行編譯。我們以昨天的教程中創建的StartKit項目爲實例,先看看下面的配置文件:
CCNET配置文件代碼 
  1 <cruisecontrol xmlns:cb="urn:ccnet.config.builder">
  2    
<!--項目名稱-->
  3    
<name>StartKit</name>
  4    
<!--標示類型,有多種類型。下面爲默認標示,作爲每次編譯時生成的日誌文件的名稱-->
  5    
<labeller type="defaultlabeller">
  6        
<!--前綴-->
  7         
<prefix>StartKit-1-</prefix>
  8        
<!--編譯失敗時是否增加-->
  9         
<incrementOnFailure>false</incrementOnFailure>
 10       
<!--格式-->
 11        
<labelFormat>00000</labelFormat>
 12   
</labeller>
 13   
<!--項目的WebDashboard地址,CruiseControl.NET包括二部分,一是Server用來配置項目和監視文件修改,二是WebDashboard,是一個顯示項目信息及編譯信息的Website-->
 14       
<webURL>http://202.196.96.55:8080/server/local/project/StartKit/ViewProjectReport.aspx</webURL>
 15   
<!--觸發器,包含多種,有興趣可以查看官方文檔-->
 16   
<triggers>
 17   
<!--時間間隔觸發器,下面是60秒觸發一次-->
 18         
<intervalTrigger seconds="60" />
 19   
</triggers>
 20   
<!--如果發現修改,延遲多久開始編譯,下面是2秒-->
 21   
<modificationDelaySeconds>2</modificationDelaySeconds>
 22   
<!--源代碼控制系統,支持多種,有興趣可以查看官方文檔,下面採用svn-->
 23   
<sourcecontrol type="svn">
 24   
<!--源代碼在SVN服務器上的路徑-->
 25         
<trunkUrl>http://zt.net.henu.edu.cn/svn/StartKit/StartKit/</trunkUrl>
 26   
<!--svn服務器所在路徑,在這裏就是VisualSVN Server安裝目錄中的bin目錄下的svn.exe -->
 27         
<executable>C:/Program Files/VisualSVN Server/bin/svn.exe</executable>
 28     
<!--用來遷出源代碼的用戶名,svn服務器進行驗證-->
 29   
<username>starter</username>
 30   
<!--用來遷出源代碼的用戶名對應的密碼-->
 31         
<password>123456</password>
 32       
<!--web獲取源代碼的地址,類似於開源網站上瀏覽代碼的那部分功能,這裏的類型是trac-->
 33   
<!--<webUrlBuilder type="trac">
 34       <!--trac中對應項目的地址¬
-->
 35         
<tracProjectUrl>http://svn.net.henu.edu.cn/pojects/StartKit/</tracProjectUrl>
 36         
<!--trac中對應項目的源代碼庫地址,相對於上面的路徑-->
 37         
<tracRepositoryRoot>/StartKit</tracRepositoryRoot>
 38         
</webUrlBuilder>-->
 39   
</sourcecontrol>
 40   
<!--該節點用來配置具體執行那些任務-->
 41   
<tasks>
 42   
<!--msbuild任務配置,用來編譯項目-->
 43         
<msbuild>
 44           
<!--MSBuild.exe的路徑-->
 45           
<executable>C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable>
 46           
<!--從SVN遷出的源代碼的存放位置,可以不配置,下面的即爲默認值 -->
 47           
<!--我這裏的CruiseControl.NET 安裝在D盤,你們使用時候,改成自己的安裝路徑即可-->
 48           
<workingDirectory>D:\Program Files\CruiseControl.NET\server\StartKit\WorkingDirectory</workingDirectory>
 49           
<!--對這個項目的監控過程的日誌記錄目錄,可以不配置,下面的即爲默認值-->
 50           
<!--我這裏的CruiseControl.NET 安裝在D盤,你們使用時候,改成自己的安裝路徑即可-->
 51            
<artifactDirectory> D:\Program Files\CruiseControl.NET\server\StartKit\ Artifacts</artifactDirectory>
 52           
<!--要編譯的項目名稱 -->
 53   
<projectFile>StartKit.sln</projectFile>
 54   
<!-- MSBuild編譯時的參數,具體參數信息可以查看MSDN上的說明-->
 55           
<buildArgs>/p:configuration=debug</buildArgs>
 56           
<!--指定日誌記錄模塊-->
 57          
<!--我這裏的CruiseControl.NET 安裝在D盤,你們使用時候,改成自己的安裝路徑即可-->
 58           
<logger>ThoughtWorks.CruiseControl.MsBuild.XmlLogger,D:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
 59           
<!--編譯目標-->
 60   
<targets />
 61         
</msbuild>
 62           
<!--在這裏還可以添加其他的程序,比如運行測試、部署項目等等-->
 63   
</tasks>
 64   
<!--項目編譯狀態信息的保存位置-->
 65   
<!--我這裏的CruiseControl.NET 安裝在D盤,你們使用時候,改成自己的安裝路徑即可-->
 66       
<state type="state" directory="D:\Program Files\CruiseControl.NET\server\CCState" />
 67   
<!--發佈和部署配置-->
 68   
<publishers>
 69     
<!--如果編譯成功,那麼下面的配置,會將源代碼複製到指定目錄HistoryVersion下,名稱爲版本標識(自動增長,labeller配置)的子目錄下-->
 70     
<buildpublisher>
 71       
<!--源代碼路徑-->
 72       
<!--我這裏的CruiseControl.NET 安裝在D盤,你們使用時候,改成自己的安裝路徑即可-->
 73        
<sourceDir> D:\Program Files\CruiseControl.NET\server\StartKit\WorkingDirectory </sourceDir>
 74        
<!--編譯成功後保存源代碼到該目錄下名稱爲版本標示labeller的目錄中-->
 75       
<!--我這裏的CruiseControl.NET 安裝在D盤,你們使用時候,改成自己的安裝路徑即可-->
 76   
<publishDir> D:\Program Files\CruiseControl.NET\server\StartKit\HistoryVersion </publishDir>
 77     
</buildpublisher> 
 78   
<!--該節點用來配置合併多個文件,當時有外部插件時,要把他們分別產生的輸出文件合併--> 
 79         
<merge>
 80           
<!--要合併的文件,合併後的信息可以顯示在Web Dashboard和郵件通知裏-->
 81           
<files>
 82               
<!--我這裏的CruiseControl.NET 安裝在D盤,你們使用時候,改成自己的安裝路徑即可-->
 83             
<file>D:\Program Files\CruiseControl.NET\server\StartKit\WorkingDirectory\results.xml</file>
 84           
</files>
 85         
</merge>
 86           
<!--源代碼路徑-->
 87         
<xmllogger />
 88           
<!--顯示歷史修改記錄列表, 在Web Dashboard中可以查看-->
 89        
<modificationHistory />
 90          
<!--所有編譯信息的統計, 在Web Dashboard中可以查看-->
 91         
<statistics />
 92           
<!--郵件通知配置,每次編譯後,都會郵件通知下面配置中添加的用戶-->
 93         
<!-- mailhost是發送郵件的主機,mailport是郵件發送端口,mailhostUsername發送郵件的郵箱用戶名,mailhostPassword發送郵件的郵箱密碼,from希望顯示在發件人中的郵箱地址, includeDetails郵件內容是否包含詳細的編譯信息 -->
 94   
<email mailhost="smtp.qq.com" mailport="25"
 95                    mailhostUsername
="******" mailhostPassword="******" from="******@qq.com" includeDetails="true">
 96           
<!--接收郵件通知的用戶 -->
 97   
<users>
 98     
<!--name是SVN服務器上存在的用戶名,group是SVN服務器上存在的組,address是該用戶的郵箱地址 -->
 99             
<user name="zt" group="StartKit" address="******[email protected]" />
100            
<user name="***" group="StartKit" address="******[email protected]" />
101           
<user name="***" group="StartKit" address="******[email protected]" />
102          
</users>
103          
<!--接收郵件通知的組-->  
104        
<groups>  
105          
<!--name必須是SVN服務器上存在的組,notification是什麼時候發送通知,可選有Always/Success/Change/Fixed/Failed --> 
106           <group name="StartKit " notification="always" /> 
107          </groups>  
108        
</email>  
109      
</publishers>  
110    
</project>  
111  
<!--可以同時添加多個項目  
112  <project >  
113  <name>test</name>  
114  ……  
115  </project>  
116  
-->  
117  
</cruisecontrol>
好了,我們已經對CCNET的配置文件有了大致的瞭解,接下來,你打開CCNET的安裝路徑,找到子目錄server下的ccnet.config文件,把上面的配置信息Copy到ccnet.config文件中,記得把配置文件中的一些路徑修改爲自己的實際路徑啊,修改好後,保存。這時候,檢查Windows服務CruiseControl.NET Server是否啓動,如果沒有則啓動它,啓動該服務後,打開瀏覽在地址欄輸入上面配置文件中的webUrl地址:http://202.196.96.55:8080/server/local/project/StartKit/ViewProjectReport.aspx 也可以直接輸入http://202.196.96.55:8080/server/ ,這裏是演示地址,要根據自己的實際情況修改爲正確的地址,OK,看到類似下圖的效果,好了,搞定!如果你遇到了什麼麻煩,請在下面留言,我一定會及時回覆!
點擊StartKit,轉入下圖所示的頁面:
OK,到這裏,我們提交更新到SVN服務器後,CCNET就會根據我們配置自動編譯項目,而且我們也可以通過Web Dashboard來查看具體的編譯信息了,提示如果配置了郵件發送,那麼我們還可以通過郵件收到詳細的編譯信息,怎麼樣?夠方便吧!

    其實,CCNET的功能是相當強大的,上面只是最常用的配置,其他還有很多非常好的功能。你想知道嗎?那你可以在這裏查看CCNET官方文檔 ,實際上,你安裝CCNET後,文檔也已經安裝到你的電腦了,在CCNET的安裝目錄下的webdashboard的子目錄doc中就是。 

     下面我簡單講一下,如何使用CruiseControl.NET Tray【以下簡稱CCTray】來監視每次提交後的編譯狀態。
安裝好打開CCTray後,運行CCTray程序,點擊左上角的菜單File下的Settings…,如下圖:

點擊Settings…會彈出下面的窗體:

切換到Build Projects選項卡,如下圖:

點擊Add…按鈕,添加我們的CCNET服務器,如下圖:

輸入我們的CCNET服務器後,CCNET服務器上的項目就會在右側顯示出來,如下圖:

選中右側的項目後,點擊OK按鈕,返回CCTray打開時的界面,我們的二個項目已經添加進來了,如下圖:

我們在桌面的右下角的任務欄,可以看到如下圖所示的圖標:

綠色的那個標示就是CCTray的標示,綠色表示所有的項目都通過了編譯,紫紅色表示至少有一個項目沒有通過編譯,橘黃色表示有項目正在編譯,橘紅色表示有項目被強制編譯,顯示爲灰色則說明和CCNET服務器失去了鏈接。

    OK,大家可以使用CCTray實時監視提交更新後項目的編譯狀態了。

    如果大家有什麼問題,歡迎和我交流!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章