【问题标题】:Jenkins : Trigger Single Downstream job based on multiple upstream jobJenkins:基于多个上游作业触发单个下游作业
【发布时间】:2019-04-06 03:20:23
【问题描述】:

我想在 Jenkins 中构建一个管道,其中基于多个上游作业的结果应该触发单个下游作业。

例如:

Job 1 --> Job 2 -->   Job 5 --> Job 6
          Job 3 -->
          Job 4 -->

作业 1:当将新代码提交到 Git 生产时,它应该触发作业 2,3 和 4(这部分我能够使用 Post Build Action 中的 Build Other jobs 选项运行运行;尽管有任何改进建议这也非常感谢)。

作业 2,3 和 4 是要在不同测试机器上运行的回归。

我无法弄清楚的部分是只有当 Job 2,3 和 4 成功时它应该触发下游 Job 5,最终 5 可以触发 6。

我目前正在使用 Build Pipeline 插件,但它对于一个(下游)到多个(上游)作业是成功的,反之则不然。

非常感谢任何帮助/建议/指导。提前致谢! 干杯!!

【问题讨论】:

    标签: jenkins triggers


    【解决方案1】:

    您可以使用作业 5 配置“构建触发器”部分的“构建其他项目后构建”来执行此操作。在那里,您添加 Job2、Job3 和 Job4 作为依赖项,并设置选项“仅在构建稳定时触发”(如下图所示)。这应该可以完成这项工作,并将等待三个工作完成。

    但是正如您所说,当 Job2,3 和 4 成功时,这并没有实现执行 Job5 的目标(即使其中一个失败,Job5 也会被执行)。我认为适合您的情况的最佳解决方案是使用新作业并将其创建为“管道”作业(我们称之为 PipelineJob)。这样,您不必编辑具有自己的配置和依赖项的每个作业,并且可以更轻松地调整管道行为。还要感谢错误传播,如果某个阶段也失败了,它也会失败!这应该按预期工作:

    pipeline {
        agent any
        stages{
            stage('Phase 1') {
                steps {
                    build 'Job1'
                }
            }
            stage('Phase 2') {
                parallel {
                    stage('Job 2') {
                        steps {
                            build 'Job2'
                        }
                    }
                    stage('Job 3') {
                        steps {
                            build 'Job3'
                       }
                    }
                    stage('Job 4') {
                        steps {
                            build 'Job4'
                       }
                    }
                }
            }
            stage('Phase 3') {
                steps {
                    build 'Job5'
                }
            }
            stage('Phase 4') {
                steps {
                    build 'Job6'
                }
            }
        }
    }
    

    【讨论】:

    • 这不起作用。我已经尝试过这种方法。如果我使用这种方法,即使任何作业(即 Job2、3,4)失败,即使那样它也会触发 Job 5,这不应该是 ryt 的情况?
    【解决方案2】:

    除了@CMassa 的回答(是的,这有效 - 感谢您的回答),我发现了 Jenkins 的 Join Plugin,它也适用于这种情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-31
      • 1970-01-01
      • 2014-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多