文章简介
本文分享 Jenkins 实现邮件发送,装置 Jenkins 可参考 jenkins 装置。写这篇文章,是在理论应用 Jenkins 过程中遇到这样一个问题,当每次 Jenkins 构建胜利或者失败后,须要集体登录 Jenkins 查看构建后果,同时在构建前做了数据备份,也须要手动的拷贝一份备份文件到本地。为了解决这个问题,便想到了 Jenkins 的邮件性能。在集体实际中,在每次 master 分支主动构建前,须要将数据库和代码打包、备份,在 Jenkins 构建完结之后,将备份的文件发送给对应的负责人。
文章局部细节的中央可能省略待过,因而须要对 Jenkins 有肯定应用的用户比拟适合,如果不相熟的,能够参考下面提交的文章。文章波及到不精确的信息还望反馈。
大抵逻辑
接下来整个流程,也都依照该流程进行演示如何配置。
装置插件
首先点击治理,而后点击插件治理,跳转到插件核心。
如果没有装置过 email 对应的插件,点击可选插件按钮,而后输出 email 关键词,进行搜寻即可。这里我曾经装置过了,为了演示抉择已装置菜单。
在装置插件的过程中,须要留神一个版本号。2.73 版本的插件有一个 bug,就是配置正确却不能发送邮件。倡议避开这个版本号。
系统配置
装置好插件之后,接下来就须要进入系统配置。进入系统配置,次要配置两个中央,一个是管理员的邮箱地址,一个是插件的配置信息。
记住插件发送邮件的账号肯定的和管理员的邮箱账号统一,否者会呈现上面错误信息。
错误信息:
com.sun.mail.smtp.SMTPSenderFailedException: 553 Mail from must equal authorized user
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1587)
Caused: com.sun.mail.smtp.SMTPSendFailedException: 553 Mail from must equal authorized user;
nested exception is:
com.sun.mail.smtp.SMTPSenderFailedException: 553 Mail from must equal authorized 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:581)
at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
错误信息的大抵意思就是说,邮箱的受权用户 (插件配置的账号) 和 from(邮件发送者)账号不统一。
这里其实有点小困惑,邮件配置受权账户,为什么管理员的邮件账号还必须保持一致。按理来说,既然配置了受权用户,就采纳配置的受权邮箱进行发送呗。可能是零碎应用的管理员邮件发送。这里的配置受权仅仅是为了受权第三方邮箱账户吧。
我的项目配置
接下来,咱们创立一个工作测试发送邮件。至于具体的配置这里省略待过,间接记录配置邮件的中央。
这外面就是针对该项目标具体配置信息,下面咱们提交到系统配置,属于全局配置。如果这里没有配置,则默认走全局配置。大抵的配置信息和全局配置都是雷同的作用,能够依据不同的工作,自行配置即可。
邮件测试
最初配置结束,当提交代码待仓库后,应用 webhooks 主动触发构建,登录邮箱就能够查看到上面的一些构建根底信息了。如果邮件须要更多的配置信息,间接到工作中去配置即可。