如何从 Groovy 脚本中检索 Jenkins 环境?

How to retrieve Jenkins environment from Groovy script?

我正在设置 Jenkins。我正在使用 Global Pipeline Libraries 对我的管道进行编程,以提高可重用性。脚本是面向对象的,并且在 Groovy 中。可以找到有关该概念的信息 there

我无法使用我的库脚本检索 Jenkins 特定环境。例如,我想访问:

我尝试使用 env.WORKSPACE 但它返回 NULL。我设法直接在管道中检索它,但这不是我的目标。

我正在使用 Jenkins 2.303.1。

所以你正在寻找的环境可以在groovy脚本

中使用这样的方式访问

${env.BUILD_NUMBER} ${env.JOB_NAME} ${env.WORKSPACE} ${env.BUILD_ID}

根据您编写脚本的方式,您可能需要注入 Jenkins 环境。例如,如果您采用更面向对象的方式

// vars/whatever.groovy
import ...

@Field
def myTool = new MyTool(this)
// src/.../MyTool.groovy
import ...

class MyTool {
    private final jenkins

    MyTool(steps) {
        this.jenkins = jenkins
    }

    def echoBuildNumber() {
        this.jenkins.echo(this.jenkins.env.BUILD_NUMBER)
    }
}
// Jenkinsfile
@Library(...)
node {
    echo env.BUILD_NUMBER             // echoes build number
    whatever.myTool.echoBuildNumber() // echoes build number
}