将数据(变量/参数)从一个下游作业传递到上游作业,以便将数据传递到另一个下游作业

时间:2021-03-31 04:01:06

标签: jenkins jenkins-pipeline jenkins-groovy

我有一个场景,我从一个上游作业依次触发两个下游作业。

我需要将第一个下游作业(作业 A)中生成的数据 xyz = 3.1416(参数/变量)返回给上游作业或读取第一个中生成的数据 xyz(参数/变量)上游作业的下游作业(作业 A)。

我想这样做,因为上游作业需要将此数据传递给另一个下游作业(作业 B)。
所有这些工作都是管道工作。 我正在将上游作业编写为一个抽象层,并一个接一个地自动触发 2 个下游作业。

structure / flowchart of jobs

1 个答案:

答案 0 :(得分:0)

有几种方法试图解决这个问题。向上和下游调用作业不是一个好主意,因为您可以在它们之间创建循环引用(即:A 调用 B,再次调用 A,调用 B...)。你的 Jenkins 可能不会崩溃,因为它受工人数量的限制,但仍然......

解决方案 A:使用工件

您可以将值存储在 JSON 或 YAML 文件中,然后使用 archiveArtifacts() 步骤和 Copy Artifact 插件创建 Jenkins 工件。这样,作业和构建就可以在它们之间共享信息。

解决方案 B:使用 buildVariables

有一种方法可以使用称为 buildVariables 的资源将下游作业的值返回给上游作业。这是上游作业的代码:

def ret = build job: 'downstream_job'
print "The returned value from the triggered job was ${ret.buildVariables.RETURNED_VALUE}"

在下游作业中:


environment {
    RETURNED_VALUE = ""
}

stages {
    stage('Doing something') {
        steps {
            script {
                print("Hi, I was triggered!")
                env.RETURNED_VALUE = "Blah blah blah"
            }
        }
    }
}

buildVariables 可以访问下游作业中的任何环境变量,但构建参数除外。

最好的问候。

相关问题