工作区变量未在 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 变量,并且对于嵌入的 ".

第一个更正当然更容易阅读,而且可能是您喜欢的。