如何使用Jenkinsfile在groovy函数中使用环境变量



我正在尝试使用Jenkinsfile中任何节点之外定义的环境变量。我可以在任何节点的任何管道步骤中将它们引入作用域,但不能在函数内部。目前我能想到的唯一解决方案是将它们作为参数传入。但我想直接在函数中引用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

解决方案是

  1. 使用@Field注释

  2. 从声明中删除def。关于使用def.的解释,请参阅Ted的回答

溶液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
}

解释在这里,

也回答了SO的问题:如何在Groovy中创建和访问全局变量?

相关内容

  • 没有找到相关文章

最新更新