如何在Jenkins Groovy邮件模板中添加自定义变量MD5SUM?
Jenkins邮件模板渲染错误解决方法
你遇到的问题根源有两个:
- 模板中误用了Markdown的
**语法,这会破坏HTML结构引发渲染错误 - 流水线里的
MD5SUM是局部变量,模板上下文无法直接访问该变量
修复步骤
1. 修正模板的HTML语法
移除模板中的**,改用HTML原生的<strong>标签实现加粗效果,修改后的MD5SUM相关代码如下:
<tr> <td><strong>MD5SUM:</strong></td> <td>MD5SUM of the binary is ${MD5SUM}</td> </tr>
2. 传递自定义变量到模板(二选一即可)
方案A:通过emailext的parameters参数传递
修改流水线中的emailext调用,添加参数传递逻辑,确保模板能获取到MD5SUM变量:
steps { script { def MD5SUM = sh(script: 'cat /tmp/DFS_MDSUM.txt', returnStdout: true).trim() // 移除多余换行 echo MD5SUM def mailRecipients = 'sai****@****.com' def jobName = currentBuild.fullDisplayName emailext body: '''${SCRIPT, template="groovy-html-test.template"}''', mimeType: 'text/html', subject: "[Jenkins] ${jobName}", to: "${mailRecipients}", replyTo: "${mailRecipients}", recipientProviders: [[$class: 'CulpritsRecipientProvider']], parameters: [[name: 'MD5SUM', value: MD5SUM]] // 新增变量传递 } }
方案B:将变量设为构建环境变量
把MD5SUM赋值给Jenkins环境变量,让模板通过build对象访问:
steps { script { env.MD5SUM = sh(script: 'cat /tmp/DFS_MDSUM.txt', returnStdout: true).trim() echo env.MD5SUM def mailRecipients = 'sai****@****.com' def jobName = currentBuild.fullDisplayName emailext body: '''${SCRIPT, template="groovy-html-test.template"}''', mimeType: 'text/html', subject: "[Jenkins] ${jobName}", to: "${mailRecipients}", replyTo: "${mailRecipients}", recipientProviders: [[$class: 'CulpritsRecipientProvider']] } }
同时修改模板中的变量引用:
<tr> <td><strong>MD5SUM:</strong></td> <td>MD5SUM of the binary is ${build.envVars.MD5SUM}</td> </tr>
内容的提问来源于stack exchange,提问作者sai rohith naredla
相关产品推荐
相关产品推荐

