You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 21:22:37