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

在上一篇項目管理實踐教程二、源代碼控制【Source Control Using VisualSVN Server and TortoiseSVN】中我們已經講解了如何使用TortoiseSVN和VisualSVN Server來做簡單的版本控制,這一篇我們將會講解使用CruiseControl.NET和MSBuild來搭建每日構建系統。

在第一篇項目管理實踐教程一、工欲善其事,必先利其器【Basic Tools】 中我們已經安裝了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來監視每次更新後的編譯狀態,但是今天真的太晚了,明天還要做項目,所以我明天補上,請大家見諒!
補充部分:
下面我簡單講一下,如何使用CruiseControl.NET Tray【以下簡稱CCTray】來監視每次提交後的編譯狀態。
安裝好打開CCTray後,運行CCTray程序,點擊左上角的菜單File下的Settings…,如下圖:

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

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

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

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

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

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

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

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

如果大家有什麼問題,歡迎和我交流!

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章