主题
一、Jenkins Email Extension Template 插件使用手册
1.1 插件简介
Email Extension Template 插件(全称为 Email Extension Template Plugin)是 Jenkins 的一个强大扩展,用于增强 Jenkins 的邮件通知功能。该插件允许用户创建自定义的邮件模板,使用 Jelly 脚本或 Groovy 脚本来生成丰富的 HTML 邮件内容,包括构建状态、测试结果、代码覆盖率等信息。
- 支持使用 Jelly 或 Groovy 脚本创建自定义邮件模板
- 提供丰富的变量和函数,可访问构建信息、环境变量、测试结果等
- 支持 HTML 格式邮件,可包含表格、图表、链接等富文本元素
- 可根据构建结果(成功、失败、不稳定等)发送不同内容的邮件
1.2 插件安装
- 官方地址: https://plugins.jenkins.io/email-ext-template/
- 安装方式: 系统管理 -> 管理插件 -> 可选插件 ->
Email Extension Template Plugin
-> 直接安装
TIP
该插件依赖于 Email Extension Plugin,如果尚未安装,系统会自动安装该依赖插件。
1.3 基础配置
1.3.1 系统邮件配置
在使用 Email Extension Template 插件之前,需要先配置 Jenkins 的邮件服务器:
- 进入 系统管理 -> 系统配置
- 找到 "Extended E-mail Notification" 部分
- 配置 SMTP 服务器信息:
- SMTP 服务器地址
- SMTP 端口(通常为465)
- 如需认证,勾选 "使用SMTP认证" 并填写用户名和密码
- 根据需要配置 SSL,TLS 选项
- 配置邮箱后缀
- 配置默认内容类型,选择 HTML (text/html)
- 设置默认收件人、默认主题【$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!】、默认内容【$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS: Check console output at $BUILD_URL to view the results.】
- 勾选
Allow sending to unregistered users
以允许未验证的收件人 - 点击 "保存" 按钮
1.4 在项目中配置邮件通知
1.4.1 自由风格项目配置
- 进入项目配置页面
- 配置 git 地址
- 配置Execute shell
- 在 "构建后操作" 部分,点击 "增加构建后操作步骤" 按钮
- 选择 "Editable Email Notification"
- 配置邮件通知选项:
- 收件人列表
- 邮件内容类型(HTML)
- 选择使用默认内容或项目特定内容
- 点击 "保存" 按钮
构建成功
构建失败
1.4.2 Pipeline 项目配置
在 Pipeline 脚本中使用 Email Extension Template 插件:
groovy
pipeline {
agent {
node {
label "master"
}
}
stages {
stage('CheckOut') {
steps {
script{
checkout scmGit(branches: [[name: '*/main']], extensions: [], userRemoteConfigs: [[credentialsId: 'a11aa99b-7bba-48fd-bd01-46b68732578a', url: 'http://code.srebro.cn/opforge/demo.git']])
}
}
}
stage('test') {
steps {
script{
sh '''
echo "test email"
'''
}
}
}
}
post{
always {
script{
EmailUser("${currentBuild.currentResult}")
}
}
}
}
def EmailUser(STATUS){
// 根据构建状态设置颜色
def statusColor = STATUS == 'SUCCESS' ? '#0B610B' : '#FF0000'
emailext body: """
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0">
<table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<tr>
<td>(本邮件是Jenkins程序自动下发的,请勿回复!)</td>
</tr>
<tr>
<td><h2><font color="${statusColor}">构建结果:"${STATUS}"</font></h2></td>
</tr>
<tr>
<td><br />
<b><font color="#0B610B">构建信息:</font></b><hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td>
<ul>
<li>项目名称:${JOB_NAME}</li>
<li>构建编号:${BUILD_ID}</li>
<li>构建状态: ${STATUS} </li>
<li>项目地址:<a href="${BUILD_URL}">${BUILD_URL}</a></li>
<li>构建日志:<a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
<li>历史变更记录 : <a href="${BUILD_URL}changes">${BUILD_URL}changes</a></li>
</ul>
</td>
</tr>
<tr>
</table>
</body>
</html> """,
recipientProviders: [buildUser(), developers()],
subject: 'jenkins2.0 【构建通知】: Build # $BUILD_NUMBER - $BUILD_STATUS!',
to: 'admin@srebro.cn' //默认接收对象
}
构建成功
构建失败
1.5 高级功能
1.5.1 使用预定义模板文件
除了在 Jenkins 配置中直接编写模板外,还可以使用预定义的模板文件:
方法一: 将模板定义在Jenkins 页面中 Editable Email Notification Templates
- 进入 系统管理 -> Editable Email Notification Templates
- Add New Template , 创建新的模板文件
方法二: 将模板文件放在 Jenkins 配置目录的子目录中
- 在 Jenkins 主目录下创建
email-templates
目录 - 在该目录中创建模板文件,如
build-report.jelly
或test-report.groovy
- 在项目配置中,指定模板文件路径:
- 对于自由风格项目:在 "Editable Email Notification" 的高级选项中设置 "Content" 为
${TEMPLATE, file="build-report.jelly"}
- 对于 Pipeline 项目:使用
body: '${TEMPLATE, file="build-report.jelly"}'
- 对于自由风格项目:在 "Editable Email Notification" 的高级选项中设置 "Content" 为
其他方法:将模版定义在共享库中详情见后面共享库那块的项目实战介绍
1.5.2 条件触发邮件通知
Email Extension Template 插件支持根据不同条件发送不同内容的邮件:
groovy
pipeline {
agent any
stages {
// 构建阶段...
}
post {
success {
emailext (
subject: "✅ 构建成功: ${env.JOB_NAME} #${env.BUILD_NUMBER}",
body: '${TEMPLATE, file="success-template.html"}',
to: 'team@example.com',
mimeType: 'text/html'
)
}
failure {
emailext (
subject: "❌ 构建失败: ${env.JOB_NAME} #${env.BUILD_NUMBER}",
body: '${TEMPLATE, file="failure-template.html"}',
to: 'team@example.com,manager@example.com',
mimeType: 'text/html'
)
}
unstable {
emailext (
subject: "⚠️ 构建不稳定: ${env.JOB_NAME} #${env.BUILD_NUMBER}",
body: '${TEMPLATE, file="unstable-template.html"}',
to: 'team@example.com',
mimeType: 'text/html'
)
}
}
}
1.6 常见问题与解决方案
1.6.1 邮件发送失败
问题:配置了邮件通知但没有收到邮件
解决方案:
- 检查 SMTP 服务器配置是否正确
- 验证收件人地址是否有效
- 查看 Jenkins 系统日志中的邮件发送错误信息
- 尝试使用 "Test configuration" 按钮测试邮件发送
1.6.2 模板渲染错误
问题:邮件内容显示错误或模板变量未被替换
解决方案:
- 检查模板语法是否正确
- 确保引用的变量在当前构建环境中存在
- 使用 try-catch 块包装可能失败的代码部分
- 在模板中添加调试信息,如打印变量值
1.6.3 HTML 内容显示为纯文本
问题:HTML 格式的邮件内容显示为纯文本
解决方案:
- 确保 "Content Type" 设置为 "text/html"
- 检查邮件客户端是否支持 HTML 邮件
- 验证 HTML 标记是否正确闭合