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 在脚本 运行.
期间展开
对于这个非常简单的工作流程:
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 在脚本 运行.
期间展开