Jenkins 邮件发送「可修改模版」

简介: 在团队合作中,项目在构建异常「或成功」时候,需要邮件通知相关的人员,这就涉及到 Jenkins 邮件发送的功能了。

image.png


这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战


上一篇,Jenkins Pipeline 结合 Gitlab 实现 Node 项目自动构建 我们已经实现了自动构建的功能。


在团队合作中,项目在构建异常「或成功」时候,需要邮件通知相关的人员,这就涉及到 Jenkins 邮件发送的功能了。


安装 Email Extension



Email Extension 插件允许你配置邮件通知。通过此插件,你可以自定义邮件的发送人,接受者和发送的内容。


Manage Jenkins -> Manage Plugins -> Available 。搜索 Email Extension 安装


image.png


配置 Email Extension 参数



Manage Jenkins -> Configure System -> Extended E-mail Notification


image.png


第 1 点:Simple Mail Transfer Protocol (SMTP) 自己申请,如果不知道如何操作,请网上找答案。(应该也许不难吧...)


第 2 点: 邮件默认的接收邮件地址。


构建脚本



使用Jenkins Pipeline 结合 Gitlab 实现 Node 项目自动构建Jenkinsfile脚本补充下。


pipeline {
    agent any
    tools { 
        nodejs "nodejs" 
    }
    stages {
        stage('Dependency') {
            steps {
                sh 'npm install'
            }
        }
        stage('Build') { 
            steps {
                sh 'npm run clean' 
                sh 'npm run build' 
            }
        }
    }
    // 添加的脚本内容
    post {
        always {
            emailext body: '${DEFAULT_CONTENT}',
                subject: '${DEFAULT_SUBJECT}',
                to: '${DEFAULT_RECIPIENTS}',
                from: '${env.DEFAULT_FROM_EMAIL}'
        }
    }
}
复制代码


这就很明显了:默认发送邮箱默认接收邮箱默认的发送主题默认的发送内容

都是获取我们上一步设定的值。效果如下:


构建失败:


image.png


构建成功:


image.png


对比上面的两张图,构建失败和构建成功,的构建结果字体竟然是不同的颜色,神奇...


如果你看上一节配置 Email Extension 参数中的截图,你可能会留意到:


<h2><font color="${BUILD_STATUS}">构建结果 - ${BUILD_STATUS}</font></h2>
复制代码


color="${BUILD_STATUS}" 嗯,加上这个,不同状态返回的构建结果字体不同颜色了?我们带动下构建pipelinealways -> changed。触发构建信息由失败 -> 成功,得到下面的结果:


image.png


看来是想多了啊,并不是不同的状态不同颜色啊。不过,如果你不介意这个bug,可以使用...


升级下需求



发送邮件需要根据不同状态,使用特定的颜色区分。比如:成功 -> #27AE60 , 失败 -> #E74C3C , 其他颜色 -> #F4E242


咦,这还不简单?在默认的发送模版上添加判断条件就行了。


然而,不支持,太惨了,得另辟蹊径~(大雾)


经过一番搜索,Groovy Template 能够解决这个问题。


我们更改下 pipeline 脚本:


# ...
post {
    always {
        emailext body: '''${SCRIPT, template="my-email-template"}''',
            subject: '${DEFAULT_SUBJECT}',
            to: '${DEFAULT_RECIPIENTS}',
            from: "${env.DEFAULT_FROM_EMAIL}"
    }
}
# ...
复制代码


我们构建下。构建是成功了,但是邮箱收到的却是:


image.png


Groovy Template file [my-email-template] was not found in $JENKINS_HOME/email-templates.
复制代码


邮件提示,机器中 $JENKINS_HOME/email-templates 下并不存在 my-email-template 模版。(笑哭)


没有权限怎么办呢?咱可以通过其他方法不?


再查找资料,咦,有了 - Email Extension Plugin is not loading groovy template added via Config File Provider Plugin。通过配置文件解决,我们来见证下:


步骤 1 :jenkins 平台上操作,Manage Jenkins -> Managed Files


步骤 2 : 点击 Add a new Config


步骤 3 : 点选类型 Extended Email Publisher Groovy Template, 点击 Submit 按钮提交


步骤 4 : 输入名称和相关的内容。请记住名称,后续使用到。


image.png


因为截图篇幅问题,这里的 Content 内容并没有截取完整,完整的内容请戳Groovy_template.html,其中的关键代码如下:


.tr-title {
    background-color: <%= (build.result == null || build.result.toString() == 'SUCCESS') ? '#27AE60' : build.result.toString() == 'FAILURE' ? '#E74C3C' : '#F4E242' %>;
  }
复制代码


Groovy 官方完整模版请见官方模版Groovy Email Template


扎心了啊,老铁(尬笑)


步骤 5 : 修正你的 pipeline 文件,请确保你输入和正确的名字"managed:Groovy Email Template"


# ...
post {
    changed {
        emailext body: '''${SCRIPT, template="managed:Groovy Email Template"}''',
            subject: '${DEFAULT_SUBJECT}',
            to: '${DEFAULT_RECIPIENTS}',
            from: "${env.DEFAULT_FROM_EMAIL}"
    }
}
# ...
复制代码


一切就绪,我们重新构建。结果如下:


构建状态 邮箱收到内容截图
成功

image.png

失败

image.png

中止

image.png


嗯~效果不错(撒花🎉🎉🎉)完结


读者有啥其他的方法呢,可以留言交流下。


相关文章
|
1月前
|
安全 jenkins 持续交付
如何在 Jenkins 中配置邮件通知?
如何在 Jenkins 中配置邮件通知?
|
缓存 jenkins 持续交付
jenkins构建邮件通知
jenkins构建邮件通知
62 0
|
机器人 jenkins 测试技术
继续集成jenkins+allure+pytest+python邮件发送(报告截图selenium实现)+python钉钉机器人通知
继续集成jenkins+allure+pytest+python邮件发送(报告截图selenium实现)+python钉钉机器人通知
|
数据可视化 jenkins 关系型数据库
Jenkins+Jmeter集成自动化接口测试并通过邮件发送测试报告
Jenkins+Jmeter集成自动化接口测试并通过邮件发送测试报告
Jenkins+Jmeter集成自动化接口测试并通过邮件发送测试报告
|
jenkins 持续交付
Jenkins - jenkins配置邮件报错:501 mail from address must be same as authorization user
Jenkins - jenkins配置邮件报错:501 mail from address must be same as authorization user
339 0
Jenkins - jenkins配置邮件报错:501 mail from address must be same as authorization user
|
jenkins 持续交付 数据安全/隐私保护
Jenkins 踩坑(三)| Email 配置与任务邮件发送
Jenkins 踩坑(三)| Email 配置与任务邮件发送
|
jenkins 持续交付 数据安全/隐私保护
Jenkins 踩坑(三)| Email 配置与任务邮件发送
- 在系统管理-&gt;插件管理中下载插件: 1.通过网页端 QQ 邮箱的设置进入到邮箱客户端设置页面。 2.找到邮箱的基础信息。 3.在 Jenkins:系统管理-&gt;系统配置中,最底部找到邮件通知,打开高级: 4.填入配置信息后如下: 5.注意到在配置的下方有个&quot;通过发送测试邮件测试配置&quot;,我们可以讲其勾选,填入邮箱地址,点击Test configuration来先测试一下邮件的发送. 6.如果按
|
Java jenkins 持续交付
Jenkins 教程(一)实现自动化打包及邮件通知
个人不喜欢装腔作势一堆专业术语放上去,让大多数人看不懂来提升逼格(所谓的专家),所以我简单的介绍jenkins是干啥的。本文使用jenkins,就是让它把git仓库里的东西取出来,然后在jenkins容器中编译打包,然后执行脚本,可以是运行jar等,根据自身情况量身定制脚本。
2307 0
|
jenkins 持续交付
Jenkins 邮件插件(学习笔记二十五)
1、下载插件 2、配置插件 3、插件设置 4.设置触发器:
732 0
|
jenkins 持续交付
【Jenkins】基于Slack MailClark实现邮件发送/接收及移动端消息提醒
一、如何关联Outlook/Hotmail 如何与slack关联? 1、登录slack,添加MailClark至所属的Slack team 2、添加成功,可以看到如下图所示功能介绍。此时,系统会要求你选择要连接的帐户类型。
3270 0