无法访问 Jenkins 管道中的 $BUILD_LOG

jpy*_*ams 7 jenkins jenkins-pipeline

我如何$BUILD_LOG在 Jenkins 管道中访问,或者是否有更好的方法来获取日志输出?

这个答案开始,我一直在尝试访问$BUILD_LOG环境变量,但是当我尝试

echo "${BUILD_LOG, maxLines=50, escapeHtml=false}"
Run Code Online (Sandbox Code Playgroud)

构建错误:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 11: unexpected token: BUILD_LOG @ line 11, column 29.
                       echo "${BUILD_LOG, maxLines=50, escapeHtml=false}"
Run Code Online (Sandbox Code Playgroud)

如果我尝试

echo "$BUILD_LOG"
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

groovy.lang.MissingPropertyException: No such property: BUILD_LOG for class: groovy.lang.Binding
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?或者这是访问打印输出的错误方式?

ant*_*koo 5

我在声明性管道和以下步骤中遇到了同样的问题:

emailext(
  subject: "foo",
  to: "bar",
  body: """<p>FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]':</p>
  <p>Console output (last 250 lines):<hr><pre>${BUILD_LOG}</pre></p>"""
Run Code Online (Sandbox Code Playgroud)

我安装了电子邮件分机插件。

解决方案是转义应该由插件扩展的宏的 $-sign,如下所示:

...
<p>Console output (last 250 lines):<hr><pre>\${BUILD_LOG}</pre></p>"""
...
Run Code Online (Sandbox Code Playgroud)

并且一定要使用双引号。

这样 groovy (?) 将首先扩展所有环境变量,并将转义的变量留给 email ext 插件处理。


小智 2

从您链接的答案中, BUILD_LOG 变量是由email-extension plugin设置的。您的配置是否正确,因为这可能是您的问题。

  • 就是这样。我试图在“emailext”步骤之外使用“${BUILD_LOG}”。显然这个变量只在那里起作用。 (2认同)