工作区变量未在 Jenkins 管道 post 步骤中打印
Workspace variable not printing in Jenkins Pipeline post step
我已经配置了一个 Jenkins 管道作业如下
env.WORKSPACE 工作正常
steps {
script
{
echo "${env.WORKSPACE}"
}
}
在构建期间输出是 /home/mach1/workspace
但是当我在 post 构建阶段添加一些行时,jenkins 管道作业。
它返回以下 error ${FILE,path="echo "${env.WORKSPACE}"/dir1/file2.html"}
script
{
echo "${env.WORKSPACE}"
}
}
post{
success{
script{
body:'${FILE,path="${env.WORKSPACE}/dir1/file2.html"}'
}
}
}
我可以知道哪里出错了,或者我该如何更正以便在 post 步骤中需要 /home/mach1/workspace/dir1/file2.html
A shell 环境变量在 Jenkins Pipeline Groovy 中的 env
Map 中被引用为键,在 shell 步骤方法中被引用为字符串。在您的原始示例中,您将该变量引用为 Groovy 变量,并使用正确的 "
语法将其插入到管道中。但是,在您的第二个示例中,您仍然将该变量引用为 Groovy 变量,但试图将其插入到步骤方法中已执行的 shell 命令中。这将不起作用,因为您将传递 env
Map 变量的文字字符串。
您可以通过删除 env
映射键将环境变量引用为 shell 环境变量来解决此问题:
body:'${FILE,path="${WORKSPACE}/dir1/file2.html"}'
或通过在管道内插入 Groovy 变量:
body:"${FILE,path=\"${env.WORKSPACE}/dir1/file2.html\"}"
其中字符被正确转义以表示 shell 变量 FILE
而不是 Groovy 变量,并且对于嵌入的 "
.
第一个更正当然更容易阅读,而且可能是您喜欢的。
我已经配置了一个 Jenkins 管道作业如下 env.WORKSPACE 工作正常
steps {
script
{
echo "${env.WORKSPACE}"
}
}
在构建期间输出是 /home/mach1/workspace
但是当我在 post 构建阶段添加一些行时,jenkins 管道作业。
它返回以下 error ${FILE,path="echo "${env.WORKSPACE}"/dir1/file2.html"}
script
{
echo "${env.WORKSPACE}"
}
}
post{
success{
script{
body:'${FILE,path="${env.WORKSPACE}/dir1/file2.html"}'
}
}
}
我可以知道哪里出错了,或者我该如何更正以便在 post 步骤中需要 /home/mach1/workspace/dir1/file2.html
A shell 环境变量在 Jenkins Pipeline Groovy 中的 env
Map 中被引用为键,在 shell 步骤方法中被引用为字符串。在您的原始示例中,您将该变量引用为 Groovy 变量,并使用正确的 "
语法将其插入到管道中。但是,在您的第二个示例中,您仍然将该变量引用为 Groovy 变量,但试图将其插入到步骤方法中已执行的 shell 命令中。这将不起作用,因为您将传递 env
Map 变量的文字字符串。
您可以通过删除 env
映射键将环境变量引用为 shell 环境变量来解决此问题:
body:'${FILE,path="${WORKSPACE}/dir1/file2.html"}'
或通过在管道内插入 Groovy 变量:
body:"${FILE,path=\"${env.WORKSPACE}/dir1/file2.html\"}"
其中字符被正确转义以表示 shell 变量 FILE
而不是 Groovy 变量,并且对于嵌入的 "
.
第一个更正当然更容易阅读,而且可能是您喜欢的。