开发团队的预期目标是每天能产生可交付的代码,对于持续集成的目标是每一次的构建能产生可执行的程序。一旦构建失败,开发团队需要立即响应,修正,以解决延时带来的浪费。
所以,构建失败的及时通知变得异常重要,如何能及时通知committer,是由谁导致的构建失败。这些工作如果你的团队还在人工执行,那么可以阅读下下面的方法,利用工具,提高效率。
很多工具为Jenkins开发了通知工具,点击查看Plugins,本文介绍其中的三种工具:邮件通知,简聊,Slack
邮件通知
邮件通知是Jenkins的默认通知工具,可以直接配置。
1. 系统管理设置
Jenkins系统管理->系统设置
如图,使用一个已有的邮箱(比如163或者qq)作为邮件通知邮箱,配置SMTP服务器,邮箱的用户名和密码。
用户默认邮件后缀是填写公司邮箱后缀,在邮件通知时会自动将后缀增加至svn提交者的用户名后面。
配置完成后可以勾选
通过发送测试邮件测试配置
如果出现“Email was successfully sent”,代表配置没有问题。
2. Job配置
在需要邮件通知的Job设置里面增加“构建后操作步骤”->选择E-mail Notification
邮件通知配置可以选择在每一次构建成功或 不成功,需要群发邮件的收件人信息。
但是如果你群发的收件人列表比较多,或者每次通知的人不一样,比如每次只想通知导致构建失败的那个人(即最后一次上传代码的人),那么简单的E-mail Notification肯定不能满足你的要求,需要加入下面这个插件Email extension plugin。
3. Email extension plugin
以上基本邮件通知已配置完成,Jenkins还有一个plugin用于编辑邮件通知的相关配置Email_Extension_Plugin。
“系统设置”中选择“插件管理”,搜索Email extension plugin,直接安装。安装成功后,在Job设置里面增加构建后步骤选择添加“Editable Email Notification”
下面这些设置以“$”开头的全局变量可以在Jenkins->系统管理->系统设置->Extended E-mail Notification中进行设置。
有些内容可能会被下面的高级设置覆盖,比如Default Content。
如果希望分别针对构建成功和构建失败发送不同的邮件通知,可以点击Advanced Setting。注意Triggers的设置,可以配置多种Triggers(触发器),Failure-Any,Failure-1st(第一次构建失败),Success,Fixed,Abort等等。触发器的种类很多,可以根据实际需要选择。每种触发器可以根据需要选择Send To,比如Failure-Any可以add upstream Committers,Requestor等等。
每一个Trigger可以单独在高级中配置Default Subject,Default Content,Recipient List等等,所以在触发器中的这个设置是可以覆盖上面的基础设置的。
Email extension plugin的详细版本可参考官网。
简聊
在Jenkins中选择简聊插件,jianliao plugin,这一步同邮件,不再赘述。
接入简聊的团队,可以在简聊的团队首页->聚合服务->Jenkins,选择添加。Jenkins的构建通知会发到简聊的某个话题中,通常可以新建一个持续集成的话题,用于通知。
添加成功后,可以展开设置指南,查看Jenkins中是如何设置简聊的,关键是将WebHook地址copy到Jenkins自己的Job中,设置指南中已经非常详细,我就不再赘述了。
Slack
不清楚国内团队使用slack的多不多,slack在国外是很火的,虽然首页登录比较慢,但team的首页的访问完全没有问题。本节仅针对你已经在slack上注册了team,并想利用slack做Jenkins的构建通知。
首先需要在Jenkins中安装 slack plugin,同邮箱,不再赘述。
登录slack,在team的setting中选择App&integrations.
直接在搜索栏中输入Jenkins,跳转至Jenkins配置页面。
新添加一个Jenkins的config,选择要通知的channel。
选择add Jenkins CI integration后,也会有详细的Jenkins接入指引。跟着指引操作一般就不会有什么问题了,slack与简聊不一样,是通过Token来标识CI集成的通知标识
总结
以上就是三种通知渠道,你喜欢哪种?个人认为如果团队比较习惯于用实时沟通工具,slack和简聊都是比较好的工具,通知也很方便,比邮箱要实时很多。当然,如果你的团队还没有接入工具,用邮箱也是可以达到这样的目的。
如果对Jenkins的配有还有什么疑问,可以参考Jenkins实践一:mac下Jenkins+gradle配置Android持续集成环境
如有问题,可以随时交流。