我正在尝试建立一个复杂的构建管道,依赖关系图如下所示。
Prj-A
|
Prj-B
/ | \
Prj-C Prj-D Prj-E
| | |
| | |
| | |
--------------
|
Prj-F
管道以Prj-A开头,然后是Prj-B。 Prj-C D E可以并行运行。当Prj-C,D,E全部完成时,运行Prj-F。
其中一个要求是,例如,因为Prj-C依赖于Prj-A和Prj-B,我想只运行Prj-C然后运行Prj-G,如果只有Prj-C中的源代码是改变。这是为了避免构建其他作业以节省整个构建时间。
经过大量的googleing,我没有发现任何解决方案可用于此类案例。所以我的解决方案(我不尝试)是:
希望我已经让自己明白了,如果有其他解决方案或您对我的解决方案的评论,请告诉我。谢谢!
答案 0 :(得分:1)
您的解决方案似乎可行但理想情况下,您希望proj-f仅使用从B的相同版本(构建计数器)传递的C,D和E组合来触发。
对于这种复杂的设置,最好使用像Go这样的工具(我在那里工作),这些工具是在考虑这些情况的基础上构建的。除非你有一个了解扇入的工具,否则你有一个可以引起虚假构建的扇入场景。
http://support.thoughtworks.com/entries/22229668-Go-s-Dependency-Management
http://www.thoughtworks-studios.com/go-continuous-delivery/compare