詹金斯 - 在所有下游工作完成后触发工作,而不仅仅是直接工作

时间:2012-09-04 08:28:05

标签: continuous-integration jenkins jenkins-plugins

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及其评论中,它表示路径可以是多个作业深度,并且必须正确使用指纹。但我无法弄清楚如何让它发挥作用。

2 个答案:

答案 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是构建和稳定的