项目管理实践【三】每日构建【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项目为实例,先看看下面的配置文件:

<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
    <!--项目名称-->
    <name>StartKit</name>
    <!--标示类型,有多种类型。下面为默认标示,作为每次编译时生成的日志文件的名称-->
    <labeller type="defaultlabeller">
        <!--前缀-->
         <prefix>StartKit-1-</prefix>
        <!--编译失败时是否增加-->
         <incrementOnFailure>false</incrementOnFailure>
       <!--格式-->
        <labelFormat>00000</labelFormat>
   </labeller>
   <!--项目的WebDashboard地址,CruiseControl.NET包括二部分,一是Server用来配置项目和监视文件修改,二是WebDashboard,是一个显示项目信息及编译信息的Website-->
       <webURL>http://202.196.96.55:8080/server/local/project/StartKit/ViewProjectReport.aspx</webURL>
   <!--触发器,包含多种,有兴趣可以查看官方文档-->
   <triggers>
   <!--时间间隔触发器,下面是60秒触发一次-->
         <intervalTrigger seconds="60" />
   </triggers>
   <!--如果发现修改,延迟多久开始编译,下面是2秒-->
   <modificationDelaySeconds>2</modificationDelaySeconds>
   <!--源代码控制系统,支持多种,有兴趣可以查看官方文档,下面采用svn-->
   <sourcecontrol type="svn">
   <!--源代码在SVN服务器上的路径-->
         <trunkUrl>http://zt.net.henu.edu.cn/svn/StartKit/StartKit/</trunkUrl>
   <!--svn服务器所在路径,在这里就是VisualSVN Server安装目录中的bin目录下的svn.exe -->
         <executable>C:/Program Files/VisualSVN Server/bin/svn.exe</executable>
     <!--用来迁出源代码的用户名,svn服务器进行验证-->
   <username>starter</username>
   <!--用来迁出源代码的用户名对应的密码-->
         <password>123456</password>
       <!--web获取源代码的地址,类似于开源网站上浏览代码的那部分功能,这里的类型是trac-->
   <!--<webUrlBuilder type="trac">
       <!--trac中对应项目的地址&not;-->
         <tracProjectUrl>http://svn.net.henu.edu.cn/pojects/StartKit/</tracProjectUrl>
         <!--trac中对应项目的源代码库地址,相对于上面的路径-->
         <tracRepositoryRoot>/StartKit</tracRepositoryRoot>
         </webUrlBuilder>-->
   </sourcecontrol>
   <!--该节点用来配置具体执行那些任务-->
   <tasks>
   <!--msbuild任务配置,用来编译项目-->
         <msbuild>
           <!--MSBuild.exe的路径-->
           <executable>C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable>
           <!--从SVN迁出的源代码的存放位置,可以不配置,下面的即为默认值 -->
           <!--我这里的CruiseControl.NET 安装在D盘,你们使用时候,改成自己的安装路径即可-->
           <workingDirectory>D:\Program Files\CruiseControl.NET\server\StartKit\WorkingDirectory</workingDirectory>
           <!--对这个项目的监控过程的日志记录目录,可以不配置,下面的即为默认值-->
           <!--我这里的CruiseControl.NET 安装在D盘,你们使用时候,改成自己的安装路径即可-->
            <artifactDirectory> D:\Program Files\CruiseControl.NET\server\StartKit\ Artifacts</artifactDirectory>
           <!--要编译的项目名称 -->
   <projectFile>StartKit.sln</projectFile>
   <!-- MSBuild编译时的参数,具体参数信息可以查看MSDN上的说明-->
           <buildArgs>/p:configuration=debug</buildArgs>
           <!--指定日志记录模块-->
          <!--我这里的CruiseControl.NET 安装在D盘,你们使用时候,改成自己的安装路径即可-->
           <logger>ThoughtWorks.CruiseControl.MsBuild.XmlLogger,D:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
           <!--编译目标-->
   <targets />
         </msbuild>
           <!--在这里还可以添加其他的程序,比如运行测试、部署项目等等-->
   </tasks>
   <!--项目编译状态信息的保存位置-->
   <!--我这里的CruiseControl.NET 安装在D盘,你们使用时候,改成自己的安装路径即可-->
       <state type="state" directory="D:\Program Files\CruiseControl.NET\server\CCState" />
   <!--发布和部署配置-->
   <publishers>
     <!--如果编译成功,那么下面的配置,会将源代码复制到指定目录HistoryVersion下,名称为版本标识(自动增长,labeller配置)的子目录下-->
     <buildpublisher>
       <!--源代码路径-->
       <!--我这里的CruiseControl.NET 安装在D盘,你们使用时候,改成自己的安装路径即可-->
        <sourceDir> D:\Program Files\CruiseControl.NET\server\StartKit\WorkingDirectory </sourceDir>
        <!--编译成功后保存源代码到该目录下名称为版本标示labeller的目录中-->
       <!--我这里的CruiseControl.NET 安装在D盘,你们使用时候,改成自己的安装路径即可-->
   <publishDir> D:\Program Files\CruiseControl.NET\server\StartKit\HistoryVersion </publishDir>
     </buildpublisher> 
   <!--该节点用来配置合并多个文件,当时有外部插件时,要把他们分别产生的输出文件合并--> 
         <merge>
           <!--要合并的文件,合并后的信息可以显示在Web Dashboard和邮件通知里-->
           <files>
               <!--我这里的CruiseControl.NET 安装在D盘,你们使用时候,改成自己的安装路径即可-->
             <file>D:\Program Files\CruiseControl.NET\server\StartKit\WorkingDirectory\results.xml</file>
           </files>
         </merge>
           <!--源代码路径-->
         <xmllogger />
           <!--显示历史修改记录列表, 在Web Dashboard中可以查看-->
        <modificationHistory />
          <!--所有编译信息的统计, 在Web Dashboard中可以查看-->
         <statistics />
           <!--邮件通知配置,每次编译后,都会邮件通知下面配置中添加的用户-->
         <!-- mailhost是发送邮件的主机,mailport是邮件发送端口,mailhostUsername发送邮件的邮箱用户名,mailhostPassword发送邮件的邮箱密码,from希望显示在发件人中的邮箱地址, includeDetails邮件内容是否包含详细的编译信息 -->
   <email mailhost="smtp.qq.com" mailport="25"
                    mailhostUsername="******" mailhostPassword="******" from="******@qq.com" includeDetails="true">
           <!--接收邮件通知的用户 -->
   <users>
     <!--name是SVN服务器上存在的用户名,group是SVN服务器上存在的组,address是该用户的邮箱地址 -->
             <user name="zt" group="StartKit" address="******1@qq.com" />
            <user name="***" group="StartKit" address="******2@qq.com" />
           <user name="***" group="StartKit" address="******3@qq.com" />
          </users>
          <!--接收邮件通知的组-->  
        <groups>  
          <!--name必须是SVN服务器上存在的组,notification是什么时候发送通知,可选有Always/Success/Change/Fixed/Failed --> 106           <group name="StartKit " notification="always" /> 107          </groups>  
        </email>  
      </publishers>  
    </project>  
  <!--可以同时添加多个项目  
  <project >  
  <name>test</name>  
  ……  
  </project>  
  -->  
</cruisecontrol>

好了,我们已经对CCNET的配置文件有了大致的了解,接下来,你打开CCNET的安装路径,找到子目录server下的ccnet.config文件,把上面的配置信息Copy到ccnet.config文件中,记得把配置文件中的一些路径修改为自己的实际路径啊,修改好后,保存。这时候,检查Windows服务CruiseControl.NET Server是否启动,如果没有则启动它,启动该服务后,

(1/2)上一页 下一页| 剩余全文

分享到:
  网友评论(0)
 
回到顶部