我有一个场景,我从一个上游作业依次触发两个下游作业。
我需要将第一个下游作业(作业 A)中生成的数据 xyz = 3.1416
(参数/变量)返回给上游作业或读取第一个中生成的数据 xyz
(参数/变量)上游作业的下游作业(作业 A)。
我想这样做,因为上游作业需要将此数据传递给另一个下游作业(作业 B)。
所有这些工作都是管道工作。
我正在将上游作业编写为一个抽象层,并一个接一个地自动触发 2 个下游作业。
答案 0 :(得分:0)
有几种方法试图解决这个问题。向上和下游调用作业不是一个好主意,因为您可以在它们之间创建循环引用(即:A 调用 B,再次调用 A,调用 B...)。你的 Jenkins 可能不会崩溃,因为它受工人数量的限制,但仍然......
您可以将值存储在 JSON 或 YAML 文件中,然后使用 archiveArtifacts() 步骤和 Copy Artifact 插件创建 Jenkins 工件。这样,作业和构建就可以在它们之间共享信息。
有一种方法可以使用称为 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 可以访问下游作业中的任何环境变量,但构建参数除外。
最好的问候。