是否有支持项目之间相关性的正确DAG(直接非循环图)的任何CI服务器(CruiseControl,Jenkins,Hudson,...)?即:具有项目依赖性的CI服务器DAG
假设您有一个公用库项目A,两个使用A但彼此独立的实用库项目B和C以及一个使用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 -j”所做的行为类似。
有没有这样的野兽?