我试图使用Jenkins文件中任何节点外定义的环境变量。我可以将它们放在任何节点中的任何管道步骤的范围内,但不能在函数内部。我现在能想到的唯一解决方案是将它们作为参数传递。但我想直接在函数内部引用env变量,所以我不必传递这么多参数。这是我的代码。如何让函数输出BRANCH_TEST
的正确值?
def BRANCH_TEST = "master"
node {
deploy()
}
def deploy(){
echo BRANCH_TEST
}
Jenkins控制台输出:
[Pipeline]
[Pipeline] echo
null
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
答案 0 :(得分:20)
解决方案
使用@Field注释
从声明中删除def。有关使用def的说明,请参阅Ted's answer。
解决方案1(使用@Field)
import groovy.transform.Field
@Field def BRANCH_TEST = "master"
node {
deploy()
}
def deploy(){
echo BRANCH_TEST
}
解决方案2(删除def)
BRANCH_TEST = "master"
node {
deploy()
}
def deploy(){
echo BRANCH_TEST
}
解释在这里,
https://groups.google.com/d/msg/jenkinsci-users/P7VMQQuMdsY/bHfBDSn9GgAJ
中回答