持续集成工具CruiseControl

本文介绍了如何配置CruiseControl.NET进行持续集成,包括设置触发器、源代码管理器、标记、任务和发布者。特别是针对ClearCase作为源代码管理器,配置了定时触发编译以及邮件通知结果。在遇到源代码操作超时问题时,通过增加timeout属性解决了该异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 最近公司要求实现代码的每日自动更新编译发布,然后就来这个活~现在做的差不多了,写一点使用经验。
做这个的时候,查到的资料里代码管理器大多是svn vss这种的,正好单位用的是Clearcase这种个人觉得超难用的代码管理工具,就稍微写点什么,没准以后或者有人用得着。
持续集成工具CruiseControl.NET-1.4.4-Setup
代码管理工具ClearCase
编译环境VS2005
目标:实现每天11点17点两个时间自动从ClearCase上获取源代码,自动编译,对编译结果发邮件通知

其实安装好CruiseControl以后,要做的就是打开$CruiseControl.NET\server\目录,修改ccnet.config文件
这个文件的详细说明文档可以在
http://ccnet.sourceforge.net/上找到,下载在上面也有
我最后配置文件内容:
<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
 <project name="IPRA">
  <triggers>
      <scheduleTrigger time="11:00" buildCondition="ForceBuild"/>
     <scheduleTrigger time="17:00" buildCondition="ForceBuild"/>
    </triggers>
  <sourcecontrol type="clearCase">
     <viewPath>D:\work\clearcase\IPRA_dev_2\IPRA_comp</viewPath>
   <autoGetSource>true</autoGetSource>
   </sourcecontrol>
   <state type="state" directory="D:\work\NAnt\CCNetState" />
   <labeller type="defaultlabeller">
    <prefix>IPRA-</prefix>
   <incrementOnFailure>true</incrementOnFailure>
  </labeller>
   <tasks> 
    <devenv>
      <solutionfile>D:\work\clearcase\IPRA_dev_2\IPRA_comp\Ipra_Src_Net\IPRA Solution.sln</solutionfile>
      <configuration>Debug</configuration>
      <executable>D:\Program Files\Microsoft Visual Studio 8\Common7\IDE\devenv.com</executable>
      <buildTimeoutSeconds>5000</buildTimeoutSeconds>
    </devenv>
    <xmllogger logDir="D:\work\NAnt\CCNetState\IPRA\logs" />
   </tasks> 
   <publishers>
      <email mailhost="xx.x.xx.xxx" mailport="25" mailhostUsername="xxx" mailhostPassword="xxxxxx" from="
xxx@company.com" includeDetails="TRUE">
     <users>
        <user name="xxx" group="buildmaster" address="
xxx@company.com"/>
      </users>
      <groups>
        <group name="buildmaster" notification="always"/>
     </groups>
    </email>
    </publishers>
 </project>
</cruisecontrol>

说明:
<project>项目标签,标签里都是对一个解决方案的配置,一个配置文件里可以有多个<project>标签分别对不同的解决方案进行管理
<triggers>触发器标签,定义每天进行编译,获取的时间点,也可以设置成<intervalTrigger seconds="60" />这种每隔一定的时间间隔就开始编译的,这个标签一定要写,不写的话就不会触发下面的所有操作了,简单来说就是它傲娇了...
<sourcecontrol>源代码管理器标签,用type指定源代码管理器类型,标签内容根据type定义的不同会有不同,各种主流的代码管理器都支持,我这里的是clearcase的,其他的写法去上面写的那个网站上看吧
<labeller>标记标签,这个其他源代码管理器需不需要单独定义我不知道,因为每次自动编译完以后会给编译过的版本打上一个标记,默认是数字"1,2,3...",clearcase不支持只有的数字标签,所以我在这里给它加了个前缀(感觉就是小萝莉不合作,怪蜀黍在拿糖果引诱小萝莉跟他走...)
<tasks>工作标签,这个里面可以包含很多东西,详细内容也去网站上看吧...我这里的就是针对doNet的解决方案做的配置。
<publishers>通告标签,通知编译结果,我这里用邮件通知
      <email>标签里是邮件服务,我用的公司内网邮件服务器,所以就直接写ip了,也可以用邮箱提供的smtp服务器 <user>里是收件人 <group>组和user里的相互对应就好,不用像有人说的那样一定要是代码管理器上的组。

 

恩,这个参数文件写错了的话,会出现非常恐怖的一片红色的提示....真是超恐怖的说

PS:觉得自己越来越像怪蜀黍了.....


后记,后来总是报告ThoughtWorks.CruiseControl.Core.CruiseControlException: Source control operation has timed out.的异常,原因是项目文件太多,编译花的时间超过了默认的timeout值(10min)。

查了一下说是源代码管理器标签里有timeout的设置,然后给的解决办法是

There is a timeout property for the `sourcecontrol` element. Itdefaults to 10 mintues.

Maybe you could try increasing that to 20 minutes and see if thathelps...  

我都设到了30分钟超时了还不行超出我容忍的范围了....最后觉得是clearcase加label时间特别长,就想干脆不加labeller算了,找了一下帮助文档,果然有这一项,然后在<sourcecontrol>标签里额外加了一条<useLabel>false</useLabel>,好了 终于不会加label了,时间减少了很多,4min左右就搞定了。不过上面的那个给label加前缀的标签还是的保留,因为最后还是会做一个标识的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值