Jenkins Join Plugin允许在所有直接下游作业完成后运行作业。
但是,如何配置在所有下游作业完成后运行的作业,而不仅仅是直接作业?
此图显示了我期望的作业触发流程:
A
|
--+----+------+--
| |
v v
B C
| |
--+--------+-----+---+-- |
| | | |
v v v |
D E F |
| | | |
v | | |
G | | |
| | | |
---+--------+----+----+-------+--
|
v
J
我在作业A上设置了“加入触发”以触发最终作业J.但是,一旦B和C完成,作业J就会启动,不会等待作业D,E,F和G。
在this answer及其评论中,它表示路径可以是多个作业深度,并且必须正确使用指纹。但我无法弄清楚如何让它发挥作用。
答案 0 :(得分:5)
Join插件仅在所有内容被分解为依赖关系的“钻石”时才有效:单个起始作业,一个或多个下游作业,但只有一个深度(D和G在图中深两层),其次通过一个单一的联合工作。您的依赖结构不遵循该菱形图案。
对于这种特殊情况,我会使用Promoted Builds Plugin。设置作业A进行促销,当触发时,运行作业J.使该促销的触发器成功完成B,C,D,E,F,G。或者如果想要最小化它:G,EF,C只需确保指纹设置正确。
对于指纹识别,在作业A期间生成文件(或选择现有文件)。将其伪装并指纹。在以下所有作业B-G中,使用CopyArtifact插件将该文件检索到作业中并对其进行指纹处理。
答案 1 :(得分:3)
如果有人想要轻松使用JobFanIn plugin。此插件允许您在作业J上设置触发器 一旦C,E,F& G是构建和稳定的