当前位置:网站首页>Jenkins - 邮件通知 Email Notification 插件
Jenkins - 邮件通知 Email Notification 插件
2022-06-28 00:15:00 【wumingxiaoyao】
引言
利用 Jenkins 创建 Pipeline Job 来实现 CICD, 邮件通知每个 Job 的运行情况是非常有必要的。特别是测试,汇报测试用例执行结果,所以本文介绍一下有关 Jenkins 邮件通知插件,Mailer Plugin 和 Email Extension Plugin。
内容提要:
- Email Plugin
Mailer Plugin
Email Extension Plugin - Email Notification Jenkins 系统配置
- Email Extension Plugin 应用
- TroubleShooting 故障排除
Email Plugin
主要介绍 2 个 Email Plugin,Mailer Plugin 和 Extended E-mail Notification Plugin
Mailer Plugin
安装 Jenkins 建议的 Plugin 后,默认会安装 Mailer Plugin,只是用来邮件通知 Build 结果,缺乏定制空间。
打开 Job Configure, 点开 Add post-build action 会看到 E-mail Notification 选项
添加 E-mail Notification 可配置的选项很少。
Email Extension Plugin
Email Extension Plugin 允许你全面灵活配置邮件通知,可以自定义邮件什么时候发送,谁应该收到邮件,邮件内容是啥。
通过 Manage Jenkins -> Plugin Manager 来安装该插件
安装成功后,打开 Job Configure 页面, 点开 Add post-build action 会看到 Editable Email Notification 选项
Email Notification Jenkins 系统配置
想通过 Jenkins 成功发送邮件,需要通过 Manage Jenkins -> Configure System 配置 SMTP 发件服务器 和 Admin 邮箱。
我配置的是 iCloud 邮箱,需要到 Apple 官网 找到适用于 iCloud 电子邮件客户端的邮件服务器设置。其他邮件也类似,找到对应的配置信息即可。
适用于发件服务器的 SMTP 信息 服务器名称:smtp.mail.me.com
是否需要 SSL:是 如果您在使用 SSL 时看到错误信息,请尝试使用 TLS 或 STARTTLS。
端口:587
是否需要 SMTP 鉴定:是
用户名:您的完整 iCloud 电子邮件地址(例如,[email protected],而不是 emilyparker)
密码:使用您在设置收件服务器时生成的 App 专用密码。
各邮箱 smtp 服务器及支持的协议 有提到邮箱配置特别说明:
对于 ssl/tls 加密,使用 465 端口
对于 starttls 一般使用 587 端口
Mailer Plugin 的配置
在 E-mail Notifiction 部分,配置如下:
在 Jenkins Location 部分配置 Admin 邮箱,注意:不设置 Admin 邮箱无法发送邮件,这个 Admin 邮箱必须跟 SMTP authentication 配置中的发件人邮箱一致。
Email Extension Plugin 配置
在 Extended E-mail Notification 部分,SMTP 和 Admin 邮箱的设置跟 Mailer Plugin 一样,这里就不重复了。
还可以设置默认的收件人,回复人名单列表,当然如果在 Job Configure 中有配置会覆盖默认的设置,或则访问变量 $DEFAULT_RECIPIENTS 和 $DEFAULT_REPLYTO 直接用默认的设置。

默认的邮件 Subject 和 Content,同理 Job Configure 中的设置会覆盖默认的设置。
触发邮件通知的条件也可以被覆盖

点开 Content Token Reference 可以看到插件可用变量的说明,在定制邮件标题和内容时使用。请参考 Jenkins - 内置变量访问 文章中有专门列出邮件配置变量。
这里说一下常用的变量
Build 触发的起因,比如:可能是由某个 Pipeline job 触发的
邮件内容是来自某一文件的,这个比较常用,内容文件可以由脚本生成,注意 PATH 是 workspace 根目录的相对路径。
Email Extension Plugin 应用
在 Job Configure 中,Add build-post actions 添加 Editable Email Notification
注意:邮件附件,及内容文件的 PATH 都是基于 workspace 根目录的相对路径。如果邮件内容还内嵌图片,附件中也需要添加这个图片,生成的 html 内容中只需直接应用这个图片就可以了,不需要其它多余路径。
<img src="cid:trend_image.png">

点击 Advance
设置邮件触发条件,Always 是不管 build 啥状态,都发送邮件通知。
设置收件人,这里有个小坑,默认可能会把 Developers 加上,导致每次收件人除了自定义的收件人列表,还加了其他人,这个其他人每天还是动态的,后面才发现这些动态的收件人其实是有提交 PR 代码改动的人。如果不想这些人收到邮件就得去掉。

下面这个就是应用后的邮件通知内容:出于内容敏感进行了模糊处理,了解大概内容就可以了
TroubleShooting 故障排除
通过任意 SMPT 服务需要 TLS 来发送邮件通知,默认 Jenkisn 是 Disable 了 mail.smtp.starttls 选项,我是通过 icloud SMTP 服务的,而且用的是 587 端口,这个是应用 starttls ,需要 Enable 这个选项。
如果 Disable 了这个选项,就会收到下面这个异常:com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first
Windows 解决方案:
- 打开 Jenkins 安装目录,可以通过 Jenkins UI 来知晓安装目录 Manage Jenkins 找到 Home directory 属性. 默认安装路径是 C:\Program Files (x86)\Jenkins
- 打开 jenkins.xml 并添加 -Dmail.smtp.starttls.enable=true 在 arguments 部分
<executable>%BASE%\jre\bin\java</executable>
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -Dmail.smtp.starttls.enable=true -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"</arguments>
- 重启 Jenkins:通过URL {base_jenkins_url}/restart
Linux 解决方案请参考:Fixing SMTPSendFailedException on Ubuntu 16.04
边栏推荐
- Capacitor
- Evaluation - grey correlation analysis
- [Yocto RM] 4 - Source Directory Structure
- 声网 VQA:将实时互动中未知的视频画质用户主观体验变可知
- I/O限制进程与CPU限制进程
- Neural network of zero basis multi map detailed map
- Appium自动化测试基础— 补充:App的包名(appPackage)和启动名(appActivity)
- To understand what is synchronous, asynchronous, serial, parallel, concurrent, process, thread, and coroutine
- 将某数据库N多表名作为另外一张表中某一列得值(范围可以是别的数据库中得某张表)
- 机器学习笔记 - 时间序列作为特征
猜你喜欢

How to optimize the "message" list of IM

数据库的新选择 Amazon Aurora

基于可学习尺寸自适应分子亚结构的药物相互作用预测

frp实现内网穿透

Lmsoc: a socially sensitive pre training method

Appium自动化测试基础— 补充:App的包名(appPackage)和启动名(appActivity)
![[embedded foundation] serial port communication](/img/b7/18fec20e2d5fa5f226c6f8bb1e93d2.png)
[embedded foundation] serial port communication

Numpy----np.tile()函数解析

要搞清楚什么是同步,异步,串行,并行,并发,进程,线程,协程

Web3 technology initial experience and related learning materials
随机推荐
模块化开发
Evaluation - grey correlation analysis
类的初始化与回调的用法
Cesium 点击绘制多边形(动态绘制多边形)
LMSOC:一种对社会敏感的预训练方法
Adobe Premiere基础-常用的视频特效(边角定位,马赛克,模糊,锐化,手写工具,效果控件层级顺序)(十六)
General process after reference layer reboot
Prometeus 2.35.0 新特性
万字长文看懂商业智能(BI)|推荐收藏
766. toplitz matrix
面试官问:JS的继承
Capacitor
Centos8 operation record command version Yum redis MySQL Nacos JDK
[Yocto RM] 2 - Yocto Project Terms
【sylixos】NEW_1 型字符驱动示例
[Yocto RM] 2 - Yocto Project Terms
Solon 1.8.3 发布,云原生微服务开发框架
[Yocto RM]3 - Yocto Project Releases and the Stable Release Process
数据库查询优化:主从读写分离及常见问题
Scala 基础 (三):运算符和流程控制