【问题标题】:How to use environment variables in a groovy function using a Jenkinsfile如何使用 Jenkinsfile 在 groovy 函数中使用环境变量
【发布时间】:2016-05-24 22:40:25
【问题描述】:

我正在尝试使用在 Jenkinsfile 中的任何节点之外定义的环境变量。我可以在任何节点的任何管道步骤中将它们纳入范围,但不能在函数内部。我现在能想到的唯一解决方案是将它们作为参数传递。但我想直接在函数内部引用环境变量,这样我就不必传入这么多参数。这是我的代码。如何让函数输出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

【问题讨论】:

标签: jenkins groovy jenkins-pipeline


【解决方案1】:

解决方案是

  1. 使用@Field注解

  2. 从声明中删除 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
   }

解释是here

也在这个 SO 问题中回答: How do I create and access the global variables in Groovy?

【讨论】:

  • 您需要删除答案中重复的import 语句。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-25
  • 1970-01-01
  • 1970-01-01
  • 2023-02-02
  • 2012-05-11
  • 2020-12-12
  • 1970-01-01
相关资源
最近更新 更多