需求:需要把Jenkins的构建情况通过邮件,钉钉,Slack等通知告诉相关的测试,开发人员。 结合之前讲的post钩子 更进一步可以实现失败时只通知给开发人员,成功通知给所有人员等。
这个需要在Jenkins中配置发件人的信息,如SMTP服务器,默认的邮件内容等 来到Jenkins的Configure System
可能会发现有两个E-mail Notification,一个是 Extended E-mail Notification
另一个是 E-mail Notification
。前者是安装Jenkins时顺便安装的插件,后者是自带的。
自带的E-mail Notification功能较弱,我们配置 Extended E-mail Notification,配置项比较多,不清楚的点问号图标查看说明。
修改pipeline,添加发送邮件的步骤,放到pipeline的post部分的always块内,你也可以改为failure
post { always { emailext( to: 'mafeifan@qq.com', attachLog: true, compressLog: true subject: "Job [${env.JOB_NAME}] - Status: ${currentBuild.result?: 'success'}", body: """ <p>EXECUTED: Job <b>/' ${env.JOB_NAME}:${env.BUILD_NUMBER}/' </b></p><p>View console output at "<a href= "${env.BUILD_URL}"> ${env.JOB_NAME}:${env.BUILD_NUMBER}</a>"</p> <p><i>(Build log is attached.)</i></p> """) } 复制代码
效果如下:
关于一些参数
类型名称 | helper方法名 | 描述 |
---|---|---|
Culprits | culprits() | 引发构建失败的人。最后一次构建成功和最后一次构建失败之间的变更提交者列表 |
Developers | developers() | 此次构建所涉及的变更的所有提交者列表 |
Requestor | requestor() | 请求构建的人,一般指手动触发构建的人 |
Upstream Committers | upstreamDevelopers() | 上游job变更提交者的列表 |
更多参数见文档
Slack 号称邮件杀手,是一款国外很火的消息聚合平台服务,通过建立不同的频道降低团队沟通的干扰。
Jenkins 安装 Slack Notification Plugin
打开 插件Github官网 ,根据提示没有Slack账号的话先申请一个
Slack 端集成Jenkin CI,需要选择一个要推送通知的频道
post { always { slackSend channel: "#机器人", message: "Build Started: ${env.JOB_NAME} ${env.BUILD_NUMBER}" } 复制代码
更多参数还是参见非常好用的Pipeline Syntax 的 Snippet Generator
效果: