对于我们的jenkins管道环境,我们正在实现一个函数库。 我们想要在多个节点上使用这个库。对于某些日志记录功能,我正在寻找一种方法来使变量具有“节点范围”。
这意味着库函数(在下面的最小例子中说())应该具有不同的输出,具体取决于节点
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()
中是未知的我知道解决方法是在调用函数时传递变量。但实际上我必须传递给每个函数的许多变量会使代码看起来很难看。
答案 0 :(得分:0)
您可以声明变量前置def
。这里有一个示例在第二个echo
步骤中失败:
node {
def var = 'hello'
echo "$var"
}
node {
echo "$var"
}