是否可以在 groovy 函数上设置环境变量

hag*_*its 2 jenkins-groovy jenkins-pipeline

我知道我可以有一个关于 jenkins 管道(声明性)的环境部分。像这样:

stage('Name') {
    environment {
        NAME = value
    }   
    steps {
        script {
            Do something using these env vars
        }
    }
} 
Run Code Online (Sandbox Code Playgroud)

我想编写一个 groovy 函数,定义一些环境变量,运行一些东西,并从几个管道中调用它。就像是:

def function () {
    environment {
        NAME = value
    }
    sh "do something using these env vars"
}
Run Code Online (Sandbox Code Playgroud)

有可能吗?

(我知道我可以写,sh "ENV=value; some CMD"但我的变量很少,而且可读性较差)。

Mat*_*ard 5

是的,你可以这样做。Jenkins Pipeline 将其环境变量存储在名为ENV. 因此,您可以向此映射添加其他键值对以获取其他环境变量。这将通过以下方式以 Groovy 语法完成:

// syntax option one
env.key = value
// syntax option two
env['key'] = value
Run Code Online (Sandbox Code Playgroud)

对于您的示例,这看起来像:

def function () {
  env.NAME = value
  sh "do something using these env vars"
}
Run Code Online (Sandbox Code Playgroud)