如何使用Groovy在声明性Jenkins管道中填充环境变量

use*_*206 4 groovy jenkins jenkins-groovy jenkins-pipeline

我正在努力使用groovy在Jenkinsfile中填充环境变量

下面的代码失败:

pipeline {
  environment {
    PACKAGE_NAME = JOB_NAME.tokenize('/')[1]
  }
{
Run Code Online (Sandbox Code Playgroud)

出现以下错误:

环境变量值只能与'+'连接在一起

我究竟做错了什么?抱歉,如果问题是基本的,那么我只是从常规和流水线开始。

Szy*_*iak 5

对于可以分配给环境变量的值,声明性管道非常严格。例如,如果您尝试设置PACKAGE_NAMEJOB_NAME,则会出现以下错误:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 5: Environment variable values must either be single quoted, double quoted, or function calls. @ line 5, column 24.
       PACKAGE_NAME = JOB_NAME
Run Code Online (Sandbox Code Playgroud)

为避免出现错误并按PACKAGE_NAME预期设置env变量,可以将其放在双引号中并在GString中评估表达式:

environment {
    PACKAGE_NAME = "${JOB_NAME.tokenize('/')[1]}"
}
Run Code Online (Sandbox Code Playgroud)

  • 我一直遇到这个问题,它基本上是正确的,除了如果你的环境变量显示为“null”,你的自定义变量将是一个内容为“null”的 _string_,而不是实际上的 null 对象。据我所知,我还必须专门检查字符串内容是否为“null”。 (2认同)