前言
最近搭建Maven+Testng+jenkins的持续集成环境,希望最后实现自动邮件运行结果报告,结果设置就费了两天时间(还没实现预期效果),记录下过程分享给需要的人。文章部分内容摘录自网络博客,部分来自官网翻译。
jenkins 内置了邮件功能,就是邮件通知, 由于它的功能太过单一无法满足需要;于是扩展插件就诞生了;文章中这两个邮件的配置都会介绍到。
内置邮件的配置与使用
jenkins内置邮件的配置相对比较简单。
- 系统配置
打开jenkins的系统管理->系统设置(Jenkins—>Manage Jenkins—>configure system),进入配置页面,如下图所示:
该处主要设置系统全局发件服务器,该邮件必须已经开启POP3/STMP服务,否则报错。
Have a Try :勾选 "通过发送测试邮件配置"测试此配置能否连通, 如果收到以下邮件:This is test email #1 sent from Jenkins 恭喜,配置成功!
- 项目配置
打开jenkins的系统管理->点击进入项目->配置,配置如下
点击保存,设置完成。执行构建,运行报告会根据你的设置发送报告。虽然该报告非常简单,但至少能用了。
邮件插件的配置与使用
- 安装插件 安装插件"Email-ext plugin";可以在线安装也可以官网下载后离线安装。具体操作可参考:
- 系统配置 打开jenkins的系统管理->系统设置(Jenkins—>Manage Jenkins—>configure system),进入配置页面
设置内容与内置邮件设置类似
- 项目配置 1)打开jenkins的系统管理->点击进入Job->配置,添加构建后步骤"Editable Email Notification"
目前附件仅实现发送文件,发送目录最终按照目录下的文件一个个显示。附件路径以<Jenkins Home>\jobs\<JobName>\workspace为跟目录,目前仅实现发送workspace目录下内容;
更灵活应用还在学习中,有高手可以留言解决方案
2)设置邮件发送触发器
点击上图中的 Advanced Settings,打开触发设置面板;点击"add trigger"选择触发条件
再触发条件下设置Send To对象;点击保存,设置成功。
附录A
附录B
- 勾选 "通过发送测试邮件配置",点击"test configuration"按钮,显示报错如下:
Failed to send out e-mail
com.sun.mail.smtp.SMTPSendFailedException: 501 mail from address must be same as authorization user;
nested exception is:
com.sun.mail.smtp.SMTPSenderFailedException: 501 mail from address must be same as authorization user
at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2057)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1580)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1097)
at javax.mail.Transport.send0(Transport.java:195)
at javax.mail.Transport.send(Transport.java:124)
at hudson.tasks.Mailer$DescriptorImpl.doSendTestMail(Mailer.java:522)
………………………………….
Caused by: com.sun.mail.smtp.SMTPSenderFailedException: 501 mail from address must be same as authorization user at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1587)
... 62 more
解决办法:系统设置中,系统管理员邮件地址必须与系统设置中邮件通知下SMTP的发件地址一致
分析原因:未知