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

时间:2016-05-24 22:40:25

标签: jenkins groovy jenkins-pipeline

我试图使用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

1 个答案:

答案 0 :(得分:20)

解决方案

  1. 使用@Field注释

  2. 从声明中删除def。有关使用def的说明,请参阅Ted's answer

  3. 解决方案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

    也在how-do-i-create-and-access-the-global-variables-in-groovy

    中回答