我们在CruiseControl中有几个项目,我注意到通常有2个或更多项目同时建设。这似乎导致了冲突。通常,构建失败,如果我查看原因,它无法访问某个文件,如果我等到其他构建完成,我可以强制构建失败的构建,它将成功。
如何配置CC,以便在它们相互冲突时不会同时运行构建?
答案 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>