背景
在 Jenkins 构建后会自动发送邮件进行提醒,但是邮件的通知并不及时,有时候会因为短时间频繁发送而被服务运营商暂时屏蔽。所以需要更及时的通知方式。
随着企业聊天软件的发展,像钉钉、企业微信等支持在群里添加机器人及时通知提醒。
这里只展示钉钉,企业微信等是差不多套路
添加钉钉机器人获取发送信息的 token
- 创建一个群
- 点击“群设置 -》 智能群助手”
- 点击“添加机器人”的“···”
- 点击“自定义”
- 给小助手起一个名字
- 安全设置可以根据需求选择,我选择的是“自定义关键词”,注意关键词需要慎重输入,否则后面调用时会因为不包含关键字导致通知失败!
- 点击完成后,会进入创建的结果。能看到推送的 token
- 把“Webhook”复制到其他地方等会会用到。
Jenkins 下载安装插件
- 登录 Jenkins
- 点击“系统设置”
- 点击“插件管理”
- 点击“Available”
- 搜索“DingTalk” 和 “Dingding JSON Pusher Plugin”(不确定要不要下载这个)
- 然后点击下载安装
消息通知的三种方法
- 使用 “DingTalk” 插件
- 使用 “钉钉通知器配置” 插件
- 使用 curl 调用机器人的 Webhook 推送消息
使用 “DingTalk” 插件
进入到项目的配置页面,在“Post-build Actions”添加“Sending Message To Ding Talk”,插件界面如下
我们逐一填入信息:
- Ding Talk Access Token:就是“WebHook”,这里填入后半截就好了,Token=xxx
- Notify peoples Phone Number:需要被 @ 强提醒人的电话号码
- Message:需要发送的消息,注意:这里不支持使用 Jenkins 的变量
- Image URL:由于这个插件使用的是“link”类型的消息通知,消息会显示一张缩略图,不填也可以
- Jenkins URL:Jenkins 的地址,如果 Jenkins 不是默认的 80 端口,需要加上端口号,例如:www.jenkins.com:8080
点击保存,构建一次后,消息通知长这样,点击会跳转到项目本次构建的页面。
这里有几个点需要注意:
- 在钉钉中,只有点击标题区域才会触发跳转,点击文本和缩略图是没反应的
- 这个插件不支持 Jenkins 变量,所以有点鸡肋,不能在 message 中知道构建结果
- 创建机器人时使用了关键词过滤,在输入 message 时记得要包含关键字,否则推送消息会失败!!!
所以我就没用这个插件,有点不太完美。。。
使用 “钉钉通知器配置” 插件
这个插件只要输入 token 和选择通知时机就 OK 了,比较简单
点击保存后,构建一次,消息通知长这样
注意:如果使用这个插件,在创建机器人时使用了关键词过滤,关键词最好在项目名称中包括,否则会推送消息失败!!!
优点:
- 可以在消息中知道构建的结果
- 点击标题也能跳转
缺点:
- 不支持自定义的标题和文本
使用 curl 调用机器人的 Webhook 推送消息
简单介绍一下 curl ,是一个利用 URL 语法在命令行下工作的文件传输工具,这里有个使用的介绍,我就不写出来了
来看下简单的调用示例:
curl -d {"msgtype": "text","text": {"content":"我就是我, 是不一样的烟火"}}' -H 'Content-Type: application/json' 'https://oapi.dingtalk.com/robot/send?access_token=xxx'
加上 -d 参数,默认发送 post 请求。
这里有几点需要注意:
- 消息的类型有几种,常见的是“text”和“link”,text 不能跳转,只是普通的消息提醒。link 能跳转,推荐使用 link
- 数据的格式是字符串的 json
- 创建机器人时使用了关键词过滤,在输入 content 和 title 时记得要包含关键字,否则推送消息会失败!!!
- 在拼接数据时,需要注意引号的位置,否则会说缺少数据(说多都是泪...)
- 注意使用变量时和引号的拼接(再次落泪...)
- 还有一点。。。如果想在消息中带上构建结果,千万不要在 build 中运行 curl,不要问我为什么。。。。
这里有官方的文档:
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于