Jenkins 工作流环境变量导致失败

Jenkins workflow environment variables causing a failure

对于这个非常简单的工作流程:

env.FOO = 42
node {
  sh "echo $FOO"
}

我收到以下错误:

Running: End of Workflow
groovy.lang.MissingPropertyException: No such property: FOO for class: WorkflowScript

如何在工作流程 shell 步骤中访问环境变量?

原因是使用双引号 Groovy 的字符串插值开始并查找 FOO 的工作流范围变量。

要修复,请使用单引号:

sh 'echo $FOO'

另请注意,您可以在带双引号的脚本中使用工作流变量:

def FOO = 43

node {
  sh "echo $FOO"
}

这将在 脚本为 运行 之前扩展 $FOO 的值。

我遇到了需要混合插值的问题。其中部分脚本是在之前插入的,而部分脚本是在其中插入的。使用反斜杠转义要在 运行 期间插入的变量的技巧:

def FOO = 42

node {
  sh """
    BAR = "hello $FOO"
    echo $BAR
  """
}

所以 $FOO 在脚本 运行s 之前展开,而 \$BAR 在脚本 运行.

期间展开