在jenkins2.0中传递自由式/管道作业上游的值 [英] pass values from a freestyle/pipeline job upstream in jenkins2.0

查看:108
本文介绍了在jenkins2.0中传递自由式/管道作业上游的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这里是我的问题简化:

我有一个主要工作(管道工作),我有x工作(自由式)。在我的主要工作中,我使用以下方式构建x作业:

主要工作中的代码 -

  res = build job:'x',参数:[string(name:'JOBNAME',value:string(name:'JIRACHEF',value:oldvalue)],quietPeriod:2 

现在在这个工作中,我改变了JIRACHEF参数的值,并且打印它来检查它是否真的改变了。

  os.environ [JIRACHEF] =newvalue
print os.environ [JIRACHEF]

这在作业x控制台输出中有效,我认为根据所提供的解决方案,此更新值现在应该可用在主要工作中,所以我在完成x后的主要工作中完成以下工作:

  res = build job:'x' ,参数:[string(name:'JOBNAME',value:string(name:'JIRACHEF',value:oldvalue)],quietPeriod:2 
print$ res.buildVariables

应打印newvalue,但打印oldvalue,从而让我相信它并没有真正将价值传递给上游。注意 - 我意识到我的工作x是自由式的,但我已经尝试了上面的解决方案,让x管道工作也一样,并且仍然得到相同的结果 - '' oldvalue'

解决方案

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

 节点{
x =构建作业:'test1',quietPeriod:2
构建作业:'test2',参数:[
string :'aValue1FromX',value:$ x.buildVariables.value1fromx),
字符串(名称:'aValue2FromX',值:$ x.buildVariables.value2fromx)
],quietPeriod:2
}

test1 - 配置:pipeline作业

 节点{
env.value1fromx =bull
env.value2fromx =熊
}

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

  node {
ech o$ env.aValue1FromX
echo$ env.aValue2FromX
}


Here is my problem simplified :

I have a main job (pipeline job) and I have x job (freestyle). In my main job I build x job using the following :

code in main job -

res = build job: 'x', parameters: [string(name: 'JOBNAME',  value: string(name: 'JIRACHEF', value: "oldvalue")], quietPeriod: 2

Now in this job x I change the value of JIRACHEF parameter and I print to check if it actually changed.:

 os.environ["JIRACHEF"] = "newvalue"
 print os.environ["JIRACHEF"]

This works in job x console output. I presume as per the solution presented, this updated value should be now available in the main job so I do the following after in main job just after building x:

res = build job: 'x', parameters: [string(name: 'JOBNAME',  value: string(name: 'JIRACHEF', value: "oldvalue")], quietPeriod: 2    
print "$res.buildVariables" 

which should print "newvalue" but prints "oldvalue" thus making me believe it isn't actually passing the value upstream.

Note - I realize my job x is freestyle, but I have tried the above solution by making x pipeline job as well and still getting the same result - 'oldvalue'

解决方案

Main job - configuration: pipeline job

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 - configuration: pipeline job

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

test2 - configuration: pipeline job, parametrized, two parameters aValue1FromX and aValue2FromX both strings

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

这篇关于在jenkins2.0中传递自由式/管道作业上游的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆