从jenkins2.0上游的自由式/管道作业传递值

时间:2017-01-14 19:34:48

标签: 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["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管道工作并尝试了上述解决方案,并且仍然得到相同的结果 - &#39; oldvalue&#39; < / p>

1 个答案:

答案 0 :(得分:0)

主要工作 - 配置:管道工作

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
}

test1 - 配置:管道作业

node {
    env.value1fromx = "bull"
    env.value2fromx = "bear"
}

test2 - 配置:管道作业,参数化,两个参数aValue1FromX和aValue2FromX两个字符串

node {
    echo "$env.aValue1FromX"
    echo "$env.aValue2FromX"
}