如何在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
我做错了什么?或者这是访问打印输出的错误方法吗?
答案 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插件处理。