项目管理实践【三】每日构建【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配置文件代码
<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
  2    

  3    
<name>StartKitname>
  4    

  5    
<labeller type="defaultlabeller">
  6        

  7         
<prefix>StartKit-1-prefix>
  8        

  9         
<incrementOnFailure>falseincrementOnFailure>
 10       

 11        
<labelFormat>00000labelFormat>
 12   
labeller>
 13   

 14       
<webURL>http://202.196.96.55:8080/server/local/project/StartKit/ViewProjectReport.aspxwebURL>
 15   

 16   
<triggers>
 17   

 18         
<intervalTrigger seconds="60" />
 19   
triggers>
 20   

 21   
<modificationDelaySeconds>2modificationDelaySeconds>
 22   

 23   
<sourcecontrol type="svn">
 24   

 25         
<trunkUrl>http://zt.net.henu.edu.cn/svn/StartKit/StartKit/trunkUrl>
 26   

 27         
<executable>C:/Program Files/VisualSVN Server/bin/svn.exeexecutable>
 28     

 29   
<username>starterusername>
 30   

 31         
<password>123456password>
 32       

 33   

 35         
<tracProjectUrl>http://svn.net.henu.edu.cn/pojects/StartKit/tracProjectUrl>
 36         

 37         
<tracRepositoryRoot>/StartKittracRepositoryRoot>
 38         
webUrlBuilder>-->
 39   
sourcecontrol>
 40   

 41   
<tasks>
 42   

 43         
<msbuild>
 44           

 45           
<executable>C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exeexecutable>
 46           

 47           

 48           
<workingDirectory>D:\Program Files\CruiseControl.NET\server\StartKit\WorkingDirectoryworkingDirectory>
 49           

 50           

 51            
<artifactDirectory> D:\Program Files\CruiseControl.NET\server\StartKit\ ArtifactsartifactDirectory>
 52           

 53   
<projectFile>StartKit.slnprojectFile>
 54   

 55           
<buildArgs>/p:configuration=debugbuildArgs>
 56           

 57          

 58           
<logger>ThoughtWorks.CruiseControl.MsBuild.XmlLogger,D:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dlllogger>
 59           

 60   
<targets />
 61         
msbuild>
 62           

 63   
tasks>
 64   

 65   

 66       
<state type="state" directory="D:\Program Files\CruiseControl.NET\server\CCState" />
 67   

 68   
<publishers>
 69     

 70     
<buildpublisher>
 71       

 72       

 73        
<sourceDir> D:\Program Files\CruiseControl.NET\server\StartKit\WorkingDirectory sourceDir>
 74        

 75       

 76   
<publishDir> D:\Program Files\CruiseControl.NET\server\StartKit\HistoryVersion publishDir>
 77     
buildpublisher> 
 78   
 
 79         
<merge>
 80           

 81           
<files>
 82               

 83             
<file>D:\Program Files\CruiseControl.NET\server\StartKit\WorkingDirectory\results.xmlfile>
 84           
files>
 85         
merge>
 86           

 87         
<xmllogger />
 88           

 89        
<modificationHistory />
 90          

 91         
<statistics />
 92           

 93         

 94   
<email mailhost="smtp.qq.com" mailport="25"
 95                    mailhostUsername
="******" mailhostPassword="******" from="******@qq.com" includeDetails="true">
 96           

 97   
<users>
 98     

 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          
 106           <group name="StartKit " notification="always" /> 107          groups>  
108        
email>  
109      
publishers>  
110    
project>  
111  
  
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,看到类似下图的效果,好了,搞定!如果你遇到了什么麻烦,请在下面留言,我一定会及时回复!
项目管理实践【三】每日构建【Daily Build Using CruiseControl.NET and MSBuild】_第1张图片点击StartKit,转入下图所示的页面:
项目管理实践【三】每日构建【Daily Build Using CruiseControl.NET and MSBuild】_第2张图片OK,到这里,我们提交更新到SVN服务器后,CCNET就会根据我们配置自动编译项目,而且我们也可以通过Web Dashboard来查看具体的编译信息了,提示如果配置了邮件发送,那么我们还可以通过邮件收到详细的编译信息,怎么样?够方便吧!

其实,CCNET的功能是相当强大的,上面只是最常用的配置,其他还有很多非常好的功能。你想知道吗?那你可以在这里查看CCNET官方文档 ,实际上,你安装CCNET后,文档也已经安装到你的电脑了,在CCNET的安装目录下的webdashboard的子目录doc中就是。

好了,我们今天的教程就到这里,本来我应该把如何使用CruiseControl.NET Tray来监视每次更新后的编译状态,但是今天真的太晚了,明天还要做项目,所以我明天补上,请大家见谅!
补充部分:
下面我简单讲一下,如何使用CruiseControl.NET Tray【以下简称CCTray】来监视每次提交后的编译状态。
安装好打开CCTray后,运行CCTray程序,点击左上角的菜单File下的Settings…,如下图:

点击Settings…会弹出下面的窗体:
项目管理实践【三】每日构建【Daily Build Using CruiseControl.NET and MSBuild】_第3张图片
切换到Build Projects选项卡,如下图:
项目管理实践【三】每日构建【Daily Build Using CruiseControl.NET and MSBuild】_第4张图片
点击Add…按钮,添加我们的CCNET服务器,如下图:
项目管理实践【三】每日构建【Daily Build Using CruiseControl.NET and MSBuild】_第5张图片
输入我们的CCNET服务器后,CCNET服务器上的项目就会在右侧显示出来,如下图:
项目管理实践【三】每日构建【Daily Build Using CruiseControl.NET and MSBuild】_第6张图片
选中右侧的项目后,点击OK按钮,返回CCTray打开时的界面,我们的二个项目已经添加进来了,如下图:
项目管理实践【三】每日构建【Daily Build Using CruiseControl.NET and MSBuild】_第7张图片
我们在桌面的右下角的任务栏,可以看到如下图所示的图标:

绿色的那个标示就是CCTray的标示,绿色表示所有的项目都通过了编译,紫红色表示至少有一个项目没有通过编译,橘黄色表示有项目正在编译,橘红色表示有项目被强制编译,显示为灰色则说明和CCNET服务器失去了链接。

OK,大家可以使用CCTray实时监视提交更新后项目的编译状态了。

如果大家有什么问题,欢迎和我交流!

 

你可能感兴趣的:(项目管理实践【三】每日构建【Daily Build Using CruiseControl.NET and MSBuild】)