如何为两个独立的构建配置CruiseControl?

时间:2010-09-14 16:53:33

标签: cruisecontrol

我正在尝试配置CruiseControl,以便每天凌晨3:00对源代码的每次修改构建项目。这是我迄今为止在project.xml中所做的事情(并且它不起作用,每日构建都没有完成):

...
<schedule interval="120">
  <maven2 … />
  <maven2 … time="0300"/>
</schedule>
...

我做错了什么?

5 个答案:

答案 0 :(得分:2)

我通常使用cc.net,但是当我正确理解文档时,您有两个选择:

  • 使用2个项目
  • requireModifications属性设置为false(这不是您想要的)

您的配置会发生以下情况:“修改”版本将全天运行,因此凌晨03:00 CruiseControl无法检测到任何修改(至少我会假设如此)。由于没有修改,因此不会运行每日构建。

来自documentation

  

......通常不是   混合时间构建的好主意   多个构建在同一个项目中   多个构建将“吃掉”所有   在被检测到之前的变化   基于时间的构建。

答案 1 :(得分:1)

据我所知,CruiseControl不可能这样做:(

答案 2 :(得分:1)

我们每天晚上都会听取gitrepo的变化并做夜间建设,我们这样做:

<schedule interval="${buildtime}">
  <ant antscript="ant.bat"
   buildfile="build.xml"
  </ant>
</schedule>
<bootstrappers>
  <gitbootstrapper localWorkingCopy="${checkout_folder}"/>
</bootstrappers>
<modificationset quietperiod="${quiettime}"
         Ignorefiles="${ignorelist}">
  <git localWorkingCopy="${checkout_folder}"/>
  <timebuild username="Cruisecontrol nightwatch"
     time="0300"
     property="build_nightly"/>
</modificationset>

正如您在此处看到的,线索是定时构建位于modificationset,而不是schedule,因此在每个预定时间,它将检查git repo是否已更改或是时候进行夜间建设了。

答案 3 :(得分:0)

我在CruiseControl.net上使用 ScheduleTrigger

前段时间我已将CI服务器从CC.net迁移到 TeamCity - 请查看它(它们也有免费版本)。它配置得更好更容易(告别那些巨大的无法管理的XML配置文件; - )

答案 4 :(得分:0)

我想到了一种方法,构建脚本拆分为插件。

例如:https://github.com/LightWare/LightCI/blob/master/config.xml