【问题标题】:Jenkins - trigger job after all downstream jobs have completed, not only the immediate onesJenkins - 在所有下游作业完成后触发作业,而不仅仅是直接作业
【发布时间】:2017-03-25 01:41:11
【问题描述】:

Jenkins Join 插件允许在所有直接下游作业完成后运行作业。

但是如何配置一个作业,使其在所有下游作业完成后运行,而不仅仅是直接作业?

此图显示了我期望的作业触发流程:

                           A
                           |
                    --+----+------+--
                      |           |
                      v           v
                      B           C
                      |           |
     --+--------+-----+---+--     |
       |        |         |       |
       v        v         v       |
       D        E         F       |
       |        |         |       |
       v        |         |       |
       G        |         |       |
       |        |         |       |
    ---+--------+----+----+-------+--
                     |
                     v
                     J

我在作业 A 上设置了 Join Trigger 以触发最终作业 J。但是作业 J 在 B 和 C 完成后启动,不会等待作业 D、E、F 和 G。

this answer 及其 cmets 中,它表示路径可以是多个作业深度,并且必须正确使用指纹。但我不知道如何使它工作。

【问题讨论】:

    标签: continuous-integration jenkins jenkins-plugins


    【解决方案1】:

    如果有人正在寻找简单的方法,请使用JobFanIn plugin。这个插件将允许您在作业 J 上设置触发器 一旦 C、E、F 和 G 构建并稳定

    【讨论】:

    • 正是我需要的,简单的构建依赖解决方案,谢谢。
    • 不允许您将参数从上游作业传递到合并作业。
    • 我猜这是一个限制。可以增强插件来做到这一点,但是对于多个上游项目,传递参数也必须处理下游工作。看看能不能加到插件里
    【解决方案2】:

    Join 插件仅在所有内容都被分解为依赖关系的“菱形”时才起作用:一个起始作业、一个或多个下游作业,但只有一层深度(D 和 G 在您的图表中是两层深度),然后是通过一个加入的工作。您的依赖结构不遵循菱形模式。

    对于这种特殊情况,我会使用Promoted Builds Plugin。设置作业 A 有一个促销,当触发时运行作业 J。使该促销的触发器是 B、C、D、E、F、G 的成功完成。或者如果想最小化它:G、E F、C . 只需确保指纹设置正确即可。

    对于指纹识别,在作业 A 期间生成一个文件(或选择现有文件)。对其进行人工处理并对其进行指纹识别。在以下所有作业 B-G 中,使用 CopyArtifact 插件将该文件检索到作业中并在那里对其进行指纹识别。

    【讨论】:

    • 您能详细说明一下指纹识别和升级的构建设置吗?我问了几乎同样的问题here
    • 完成 - 答案已更新,包含有关指纹识别的更多信息。
    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多