Jenkins2 学习系列13 -- 邮件和Slack通知
需求:需要把Jenkins的构建情况通过邮件,钉钉,Slack等通知告诉相关的测试,开发人员。 结合之前讲的 post钩子 更进一步可以实现失败时只通知给开发人员,成功通知给所有人员等。
邮件通知
这个需要在Jenkins中配置发件人的信息,如SMTP服务器,默认的邮件内容等 来到Jenkins的Configure System
- 首先在配置页面搜索 Location 配置Jenkins管理员的邮箱
image.png
- 搜索'E-mail Notification'
可能会发现有两个E-mail Notification,一个是Extended E-mail Notification
另一个是E-mail Notification
。前者是安装Jenkins时顺便安装的插件,后者是自带的。
自带的E-mail Notification功能较弱,我们配置 Extended E-mail Notification,配置项比较多,不同的点问号图标。
image.png
- 来到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 号称邮件杀手,是一款国外很火的消息聚合平台服务,通过建立不同的频道降低团队沟通的干扰。
- Jenkins 安装 Slack Notification Plugin
- 打开插件Github官网,根据提示没有账号的话先申请账号
- Slack 端集成Jenkin CI,需要选择一个要推送通知的频道
image.png
- 根据指引配置就可以了,非常人性,下图在FreeStyle类型的项目中可配
image.png
image.png
- 如果需要通过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 钉钉通知插件
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 关系型数据库查询语言 SQL 和图数据库查询语言 nGQL 对比
- 目标检测之评价指标 - mAP
- sass的基础用法
- Golang Gin 实战(十四)| 文件托管、反向代理百度网站、自实现API网关
- ceph修复pg inconsistent
- 基于kubernetes的kong网关实战
- 移动端适配必须掌握的基本概念和适配方案
- [OHIF-Viewers]医疗数字阅片-医学影像-Redux中的reducer到底是什么,以及它为什么叫reducer?
- 【从零开始用Swift开发一个iOS应用(仿微博)】开篇-1. demo上手体验
- 数据结构与算法-二维数组中的查找
- 卷积神经网络之 - GoogLeNet / Inception-v1
- 卷积神经网络之 - Alexnet
- Linux系列之学会使用Top命令进行系统监控
- 一简单线程同步笔试题分享,欢迎纠错分享更多思路
- 卷积神经网络之-NiN 网络(Network In Network)