[C#]项目管理实践【三】每日构建【Daily Build Using CruiseControl.

在上一篇项目管理实践教程二、源代码控制【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项目为实例,先看看下面的配置文件:


  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="******1@qq.com" />
100           <user name="***" group="StartKit" address="******2@qq.com" />
101           <user name="***" group="StartKit" address="******3@qq.com" />
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>
118

好了,我们已经对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来监视每次更新后的编译状态,但是今天真的太晚了,明天还要做项目,所以我明天补上,请大家见谅! 

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


作者:ttzhangTechnology Life
出处:http://ttzhang.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏