我有一个带管道的参数化作业。 例如:预定义字符串参数: IP 我试图在管道中定义一个新的String,以便在我调用另一个"构建作业时使用它作为新参数。
我尝试过以下方法:
import hudson.model.*
node('master'){
if(ipaddr =='192.168.1.1'){
def parameter = new StringParameterValue("subnet", '255.255.255.0') //not working
echo parameter //not working
}
stage ('Stage A'){
build job: 'jobA', parameters:
[
[$class: 'StringParameterValue', name: 'ip', value: ip],
[$class: 'StringParameterValue', name: 'subnet', value: subnet] //not working
]
}
}
这种方式不起作用,我收到错误:
改变行后脚本不允许使用新的hudson.model.StringParameterValue
:
def parameter = new StringParameterValue("subnet", '255.255.255.0')
为:
subnet = '255.255.255.0'
我收到了错误:
groovy.lang.MissingPropertyException:没有这样的属性:subnetmask for class:groovy.lang.Binding。
我无法使用预定义参数 ip 调用新作业,新参数子网
没有子网它正在运作
如何在管道中定义新的String参数?
jenkins版本:2.19.4
答案 0 :(得分:3)
如果你只是避免实例化def subnet = ""
if(ipaddr == '192.168.1.1') {
subnet = '255.255.255.0'
echo subnet
}
stage ('Stage A'){
build job: 'jobA', parameters:
[
[$class: 'StringParameterValue', name: 'ip', value: ipaddr],
[$class: 'StringParameterValue', name: 'subnet', value: subnet]
]
}
,你可以让它工作,因为正如David M. Karr提到的管道沙箱是非常严格的。相反,只需在调用作业时使用简单变量,如下所示:
{{1}}
非常简单,StringParameterValue params期望传递String,所以只要你传递字符串值就应该没问题!
答案 1 :(得分:0)
默认情况下,管道作业执行的沙箱非常受限制。您必须在找到它们时覆盖安全限制。转到“管理Jenkins”和“进程内脚本批准”。您应该在列表中看到发生的最后一次违规。选择它进行审批并重新运行脚本。