无法在Jenkins管道中访问$ BUILD_LOG

时间:2018-01-03 16:38:52

标签: jenkins jenkins-pipeline

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

离开this answer,我一直在尝试访问$BUILD_LOG环境变量,但是当我尝试

echo "${BUILD_LOG, maxLines=50, escapeHtml=false}"

构建错误:

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

如果我尝试

echo "$BUILD_LOG"

我收到此错误:

groovy.lang.MissingPropertyException: No such property: BUILD_LOG for class: groovy.lang.Binding

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

还没有找到通过电子邮件扩展插件在管道作业中使用BUILD_LOG参数的解决方案。

作为一个小小的安慰,我找到了一种解决方法,可以通过另一种方式访问​​构建日志:

currentBuild.rawBuild.getLog(15) 

我要显示的最后几行是15。

示例为:

  emailext attachLog: true,
                    body: "Build failed" +
                            "<br> See attached log or URL:<br>${env.BUILD_URL}" +
                            "<br><br> <b>The end of build log is:</b> <br>" +
                            currentBuild.rawBuild.getLog(15).join("<br>"),

                    mimeType: 'text/html',
                    subject: "Build failed",
                    to: 'myemail@somedomain.com'

请注意,您必须在进程内脚本批准中批准一些脚本签名,才能使用此功能。

答案 2 :(得分:0)

我在声明性管道和类似的步骤中遇到了相同的问题:

<broker xmlns="http://activemq.apache.org/schema/core">
   <destinations>
      <queue physicalName="FOO.BAR" />
      <topic physicalName="SOME.TOPIC" />
   </destinations>
</broker>

我安装了电子邮件ext插件。

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

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>"""

并确保使用双引号。

这样,groovy(?)将首先扩展所有环境变量,并保留转义的变量以供电子邮件ext插件处理。