是否有任何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”的工作方式类似。
有这样的野兽吗?