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

时间:2022-06-26
本文章向大家介绍Jenkins2 学习系列13 -- 邮件和Slack通知,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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

邮件通知

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

  1. 首先在配置页面搜索 Location 配置Jenkins管理员的邮箱

image.png

  1. 搜索'E-mail Notification'

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

自带的E-mail Notification功能较弱,我们配置 Extended E-mail Notification,配置项比较多,不同的点问号图标。

image.png

  1. 来到Pipeline项目的配置页面, 通过点击 Pipeline Syntax 来到 Snippet Generator, 生成pipeline脚本。 Step 选择 mailtext: Extended Email。

image.png

修改pipeline,添加发送邮件的步骤,放到pipeline的post部分的always块内,你也可以改为failure

    post {
      always {
        emailext to: 'mafeifan@qq.com', 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>
""", attachLog: true, compressLog: true
  }

效果如下:

image.png

关于一些参数

  • 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官网,根据提示没有账号的话先申请账号
  3. Slack 端集成Jenkin CI,需要选择一个要推送通知的频道

image.png

  1. 根据指引配置就可以了,非常人性,下图在FreeStyle类型的项目中可配

image.png

image.png

  1. 如果需要通过Pipeline代码触发
post {
  always {
    slackSend channel: "#机器人", message: "Build Started: ${env.JOB_NAME} ${env.BUILD_NUMBER}"
  }

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

image.png

效果:

image.png

钉钉通知

Slack 有时候国内速度访问比较慢,如果公司喜欢用钉钉,也可以集成钉钉通知。 步骤是类似的,不再赘述,见文档

参考

https://jenkins.io/doc/pipeline/steps/email-ext/ https://www.cnblogs.com/yangxia-test/p/4366172.html https://github.com/jenkinsci/slack-plugin Jenkins 钉钉通知插件