在jenkins2.0中向上游传递自由式/管道作业的值
以下是我的问题: 我有一份主要工作(管道工作)和一份x工作(自由泳)。在我的主要作业中,我使用以下内容构建x作业: 主作业中的代码-在jenkins2.0中向上游传递自由式/管道作业的值,jenkins,groovy,jenkins-plugins,jenkins-pipeline,Jenkins,Groovy,Jenkins Plugins,Jenkins Pipeline,以下是我的问题: 我有一份主要工作(管道工作)和一份x工作(自由泳)。在我的主要作业中,我使用以下内容构建x作业: 主作业中的代码- res = build job: 'x', parameters: [string(name: 'JOBNAME', value: string(name: 'JIRACHEF', value: "oldvalue")], quietPeriod: 2 现在,在这个作业x中,我更改了JIRACHEF参数的值,并打印以检查它是否实际更改: os.environ
res = build job: 'x', parameters: [string(name: 'JOBNAME', value: string(name: 'JIRACHEF', value: "oldvalue")], quietPeriod: 2
现在,在这个作业x中,我更改了JIRACHEF参数的值,并打印以检查它是否实际更改:
os.environ["JIRACHEF"] = "newvalue"
print os.environ["JIRACHEF"]
这在作业x控制台输出中起作用。我假设根据给出的解决方案,此更新值现在应该在主作业中可用,因此我在构建x之后在主作业中执行以下操作:
res = build job: 'x', parameters: [string(name: 'JOBNAME', value: string(name: 'JIRACHEF', value: "oldvalue")], quietPeriod: 2
print "$res.buildVariables"
它应该打印“newvalue”,但打印“oldvalue”,这样我就相信它实际上并没有向上游传递值
注意-我意识到我的作业x是自由式的,但我也尝试了上述解决方案,制作了x管道作业,但仍然得到了相同的结果—“oldvalue”主作业-配置:管道作业
node {
x = build job: 'test1', quietPeriod: 2
build job: 'test2', parameters: [
string(name: 'aValue1FromX', value: "$x.buildVariables.value1fromx"),
string(name: 'aValue2FromX', value: "$x.buildVariables.value2fromx")
], quietPeriod: 2
}
node {
env.value1fromx = "bull"
env.value2fromx = "bear"
}
test1-配置:管道作业
node {
x = build job: 'test1', quietPeriod: 2
build job: 'test2', parameters: [
string(name: 'aValue1FromX', value: "$x.buildVariables.value1fromx"),
string(name: 'aValue2FromX', value: "$x.buildVariables.value2fromx")
], quietPeriod: 2
}
node {
env.value1fromx = "bull"
env.value2fromx = "bear"
}
test2-配置:管道作业,参数化,两个参数aValue1FromX和aValue2FromX都是字符串
node {
echo "$env.aValue1FromX"
echo "$env.aValue2FromX"
}
-我确实看到不同的作业在不同的节点上运行。您是否将下游作业配置为参数化,并使用从上游传递的作业的名称为其提供参数?是的,就像在“编辑一号”中一样。我没有参数化第一个作业,但我用我从第一个作业传递的名称参数化了下游作业。你想让我在罚单中提供更多细节吗?请检查编辑2,它是你的例子的简单演示,但失败了。我想知道你是否尝试过这个,它对你有效?很有趣,所以你尝试了我的例子,因为它没有任何修改和适当的配置,它失败了?可能是重复的