CI服务器w /项目依赖关系DAG

时间:2012-10-21 13:05:19

标签: continuous-integration jenkins hudson cruisecontrol

是否有任何CI服务器(CruiseControl,Jenkins,Hudson,...)支持项目之间依赖关系的正确DAG(Direct Acyclical Graph)?那就是:

假设您有一个公共库项目A,两个实用程序库项目B和C,它们都使用A,但彼此独立,以及一个使用B和C的程序项目D.在CruiseControl.rb(我我目前正在使用),指定B取决于A,C取决于A,D取决于B和C,这是微不足道的。

如果有人提交B或C,那么CC.rb将构建它,然后按预期构建D。但如果有人提交到A,CC.rb将构建A,然后并行构建B和C - 到目前为止,这么好。但是,假设B首先完成建筑;在这一点上,CC.rb将热切地开始构建D,这很可能会失败,无论如何都是浪费时间,因为当C完成构建CC.rb将再次构建D(这是构建我们真的想要。)

我理解这种行为并非特定于CC.rb;如果CI服务器一次只考虑一个项目的依赖项,那么这似乎是固有的。我正在寻找的是一个聪明的CI服务器,可以确定D依赖于B和C,并推迟构建它直到两个完成使用相同版本的A构建。或者换句话说,CI服务器如果每个项目都是一个make动作,它的工作方式与“make -j”的工作方式类似。

有这样的野兽吗?

1 个答案:

答案 0 :(得分:1)

至少在Jenkins中,工作(或项目,如果你想称之为),甚至可以通过各种方式触发其他工作,尤其是plugins。在这里显然是相关的,可以“join”构建不同的工作,这样在完成两个不同的工作后,第三个工作就会被触发

我认为你可以很容易地构建你用Jenkins描述的系统(还有Hudson,但差别不大)。