Jenkins Groovy脚本邮件Triggered行粗体失效问题排查
问题原因
你遇到的问题核心是所有邮件内容都被包裹在<pre>标签中,HTML的<pre>标签会将内部所有内容当作预格式化文本处理,包括<b>这类HTML标签都会被直接显示成普通文本,不会被浏览器解析渲染。
解决方案
把<pre>标签替换成带有white-space: pre-wrap样式的<div>,这样既能保留日志的换行、空格格式,又能正常解析内部的HTML格式化标签。
修改后的关键代码片段:
def emailBody = "Rebuilds build #${currentBuild.number}\n" // 替换<pre>为带样式的div,保留格式同时支持HTML标签解析 emailBody += "<div style='white-space: pre-wrap; font-family: monospace;'>[Pipeline] Start of Pipeline\n" emailBody += "[Pipeline] node\n" emailBody += "Running on Jenkins in ${env.WORKSPACE}\n" emailBody += "[Pipeline] {\n\n" // 中间的日志循环处理逻辑保持不变 // 替换</pre>为</div> emailBody += "\n[Pipeline] //}</div>\n" emailext body: emailBody, subject: emailSubject, to: "avinash.akotkar@keysight.com", mimeType: 'text/html'
额外优化建议
<font>是HTML4的过时标签,推荐用CSS样式替代,让代码更符合现代HTML规范:
// Triggered行的写法替换为 emailBody += "<span style='font-family: \"Calibri (Body)\"; color: blue; font-weight: bold;'>$line</span>\n" // Stage成功状态行的写法替换为 emailBody += "<span style='font-family: \"Calibri (Body)\"; color: green;'>$line</span>\n"
内容的提问来源于stack exchange,提问作者Avinash Akotkar
相关产品推荐
相关产品推荐

