如何防止CruiseControl.NET中的并发构建?

时间:2009-08-26 18:03:22

标签: cruisecontrol.net

我们在CruiseControl中有几个项目,我注意到通常有2个或更多项目同时建设。这似乎导致了冲突。通常,构建失败,如果我查看原因,它无法访问某个文件,如果我等到其他构建完成,我可以强制构建失败的构建,它将成功。

如何配置CC,以便在它们相互冲突时不会同时运行构建?

2 个答案:

答案 0 :(得分:10)

您必须在一个队列中完成所有相互依赖的构建。

巡航控制项目配置元素有两个属性来控制并发和构建顺序:

<project name="Project 1" queue="Q1" queuePriority="1">

使用queue,您可以定义要在哪个队列中构建项目,使用queuePriority,您可以在请求多个构建时定义构建顺序。

因此,无法并行构建的两个项目必须位于同一队列中,例如queue="Q1"。当第二个项目取决于第一个项目时,第二个项目的优先级必须高于第一个项目。

答案 1 :(得分:7)

您可以使用Locking功能定义不应同时运行的队列。

这在版本1.4.3中可用

文档中的示例:

<cruisecontrol>
  <queue name="Q1" lockqueues="Q2"/>
  <queue name="Q2" lockqueues="Q1"/>

  <project name="MyFirstProject" queue="Q1" queuePriority="1">
    ...
  </project>
  ...

  <project name="MySecondProject" queue="Q2" queuePriority="1">
    ...
  </project>
  ...
</cruisecontrol>