如何从共享库中访问全局变量(currentBuild,env,...)?

时间:2017-04-28 17:13:27

标签: jenkins jenkins-pipeline

我想在shared Grovy library内访问currentBuildenv等全局变量。

示例1 (正常):

// vars/customStep.groovy
def call() {
    echo env.myParameter
}

示例2 (不起作用):

// vars/customStep.groovy
class customStep implements Serializable {
    def call() {
        echo env.myParameter
    }
}

示例3 (不起作用):

// src/com/acme/Lib.groovy
package com.acme
class Lib {
    def someMethod() {
        echo env.myParameter
    }
}

我希望能够在任何一种情况下访问变量。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

如果在类定义中使用env变量,Groovy将尝试访问类变量 env,而不是全局变量。我认为你需要创建一个构造函数并将env变量传递给它。例如:

package com.acme
class Lib {
    def env
}

并在您的管道中使用:

 def library = Lib(env: env)

我从here

获取groovy构造函数语法