转载

Jenkins2 学习系列13 -- 邮件和Slack通知

需求:需要把Jenkins的构建情况通过邮件,钉钉,Slack等通知告诉相关的测试,开发人员。 结合之前讲的post钩子 更进一步可以实现失败时只通知给开发人员,成功通知给所有人员等。

邮件通知

这个需要在Jenkins中配置发件人的信息,如SMTP服务器,默认的邮件内容等 来到Jenkins的Configure System

  1. 首先在配置页面搜索 Location 配置Jenkins管理员的邮箱,这是默认的发件人地址
Jenkins2 学习系列13 -- 邮件和Slack通知
  1. 搜索'E-mail Notification'

可能会发现有两个E-mail Notification,一个是 Extended E-mail Notification 另一个是 E-mail Notification 。前者是安装Jenkins时顺便安装的插件,后者是自带的。

自带的E-mail Notification功能较弱,我们配置 Extended E-mail Notification,配置项比较多,不清楚的点问号图标查看说明。

Jenkins2 学习系列13 -- 邮件和Slack通知
  1. 来到Pipeline项目的配置页面, 通过点击 Pipeline Syntax 来到 Snippet Generator, 生成pipeline脚本。 Step 选择 mailtext: Extended Email。
Jenkins2 学习系列13 -- 邮件和Slack通知

修改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>
""")
  }
复制代码

效果如下:

Jenkins2 学习系列13 -- 邮件和Slack通知

关于一些参数

  • attachLog(可选):将构建日志以附件形式发送
  • compressLog(可选):压缩日志
  • recipientProviders(可选): List 类型,收件人列表类型
  • replyTo(可选):回复邮箱
  • recipientProviders (可选):收件人列表类型
类型名称 helper方法名 描述
Culprits culprits() 引发构建失败的人。最后一次构建成功和最后一次构建失败之间的变更提交者列表
Developers developers() 此次构建所涉及的变更的所有提交者列表
Requestor requestor() 请求构建的人,一般指手动触发构建的人
Upstream Committers upstreamDevelopers() 上游job变更提交者的列表

更多参数见文档

Slack 通知

Slack 号称邮件杀手,是一款国外很火的消息聚合平台服务,通过建立不同的频道降低团队沟通的干扰。

  1. Jenkins 安装 Slack Notification Plugin

  2. 打开 插件Github官网 ,根据提示没有Slack账号的话先申请一个

  3. Slack 端集成Jenkin CI,需要选择一个要推送通知的频道

Jenkins2 学习系列13 -- 邮件和Slack通知
  1. 根据指引配置就可以了,非常人性,下图在FreeStyle类型的项目中可配
Jenkins2 学习系列13 -- 邮件和Slack通知
Jenkins2 学习系列13 -- 邮件和Slack通知
  1. 如果需要通过Pipeline代码触发
post {
  always {
    slackSend channel: "#机器人", message: "Build Started: ${env.JOB_NAME} ${env.BUILD_NUMBER}"
  }
复制代码

更多参数还是参见非常好用的Pipeline Syntax 的 Snippet Generator

Jenkins2 学习系列13 -- 邮件和Slack通知

效果:

Jenkins2 学习系列13 -- 邮件和Slack通知
原文  https://juejin.im/post/5d4d69fe6fb9a06ad3471914
正文到此结束
Loading...