【发布时间】:2018-02-09 06:52:29
【问题描述】:
对于我们的 jenkins 管道环境,我们正在实现一个函数库。 我们想在多个节点上使用这个库。对于某些日志记录功能,我正在寻找一种具有“节点范围”的变量的方法。
这意味着库函数(在下面的最小示例中 say())应该根据节点有不同的输出
g_str_test = "test"
parallel firstBranch: {
node {
echo g_str_test // = test
l_str_test = "para1"
echo l_str_test
sleep 2
l_str_test = "paraaaa11"
g_str_test = "para1"
say() // = paraaaa11
}
}, secondBranch: {
node {
echo g_str_test
l_str_test = "para2"
echo l_str_test // = para2
sleep 5
echo "l: "+l_str_test // should be para2 !!!!!! (but is paraaaa11)
echo "g: "+g_str_test //= para1
say() // = para2 !!!!!!
}
},
failFast: true
def say(){
echo "say: "+l_str_test
}
有没有办法让 groovy 变量具有定义的范围
node{
[VALID HERE -- also known in called functions]
}
[UNKNOWN HERE]
当对每个节点使用“def l_str_test”时 l_str_test 在 say() 中是未知的
我知道一个解决方案是在调用函数时只传递变量。但实际上,我必须将许多变量传递给每个函数,这会使代码看起来非常难看。
【问题讨论】:
标签: variables jenkins groovy scope