Jenkins管道在接受groovy方法中的多个值时出错
我正在尝试接受来自groovy方法的多个值进入Jenkins管道,并不断地遇到管道工作流错误,任何关于我在这里做错了什么的指针都将受到极大的赞赏Jenkins管道在接受groovy方法中的多个值时出错,jenkins,groovy,Jenkins,Groovy,我正在尝试接受来自groovy方法的多个值进入Jenkins管道,并不断地遇到管道工作流错误,任何关于我在这里做错了什么的指针都将受到极大的赞赏 (env.var1, env.var2, env.var3) = my_func() def my_func(){ def a =10 def b =10 def c =10 return [a, b, c] } 我发现以下错误: expecting ')', found ',' @(env.var1, env.var2, env
(env.var1, env.var2, env.var3) = my_func()
def my_func(){
def a =10
def b =10
def c =10
return [a, b, c]
}
我发现以下错误:
expecting ')', found ',' @(env.var1, env.var2, env.var3) = my_func()
您使用的功能不正确。当您将一组值分配给一组新变量时,它会起作用。不能使用此类型的指定将值指定给现有对象。在普通Groovy中执行时,代码也会失败:
def env = [foo: 'bar']
(env.var1, env.var2, env.var3) = my_func()
println env
def my_func(){
def a =10
def b =10
def c =10
return [a,b,c]
}
输出:
1 compilation error:
expecting ')', found ',' at line: 3, column: 14
在Jenkins环境中,env
变量不是由映射表示的,而是表示它甚至不支持plus()
或putAll()
方法。它只覆盖getProperty()
和setProperty()
方法,因此您可以使用env.name
点表示法访问属性
解决方案
解决问题的最简单方法是正确使用多个赋值,然后从变量中设置env变量。考虑下面的例子:
node {
stage("A") {
def (var1, var2, var3) = my_func()
env.var1 = var1
env.var2 = var2
env.var3 = var3
}
stage("B") {
println env.var1
}
}
def my_func() {
def a = 10
def b = 10
def c = 10
return [a, b, c]
}
请记住,var1
、var2
和var3
变量不能已经存在于当前作用域中,否则编译器将抛出异常