Jenkins 构建后 --- 钉钉通知的三种方式

本贴最后更新于 1219 天前,其中的信息可能已经时过境迁

背景

在 Jenkins 构建后会自动发送邮件进行提醒,但是邮件的通知并不及时,有时候会因为短时间频繁发送而被服务运营商暂时屏蔽。所以需要更及时的通知方式。

随着企业聊天软件的发展,像钉钉、企业微信等支持在群里添加机器人及时通知提醒。

这里只展示钉钉,企业微信等是差不多套路

添加钉钉机器人获取发送信息的 token

  1. 创建一个群
  2. 点击“群设置 -》 智能群助手”
    image.png
  3. 点击“添加机器人”的“···”
  4. 点击“自定义”
  5. 给小助手起一个名字
  6. 安全设置可以根据需求选择,我选择的是“自定义关键词”,注意关键词需要慎重输入,否则后面调用时会因为不包含关键字导致通知失败!
  7. 点击完成后,会进入创建的结果。能看到推送的 token
    image.png
  8. 把“Webhook”复制到其他地方等会会用到。

Jenkins 下载安装插件

  1. 登录 Jenkins
  2. 点击“系统设置”
  3. 点击“插件管理”
  4. 点击“Available”
  5. 搜索“DingTalk” 和 “Dingding JSON Pusher Plugin”(不确定要不要下载这个
  6. 然后点击下载安装

消息通知的三种方法

  • 使用 “DingTalk” 插件
  • 使用 “钉钉通知器配置” 插件
  • 使用 curl 调用机器人的 Webhook 推送消息

使用 “DingTalk” 插件

进入到项目的配置页面,在“Post-build Actions”添加“Sending Message To Ding Talk”,插件界面如下
image.png

我们逐一填入信息:

  • 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

点击保存,构建一次后,消息通知长这样,点击会跳转到项目本次构建的页面。image.png

这里有几个点需要注意:

  1. 在钉钉中,只有点击标题区域才会触发跳转,点击文本和缩略图是没反应的
  2. 这个插件不支持 Jenkins 变量,所以有点鸡肋,不能在 message 中知道构建结果
  3. 创建机器人时使用了关键词过滤,在输入 message 时记得要包含关键字,否则推送消息会失败!!!

所以我就没用这个插件,有点不太完美。。。

使用 “钉钉通知器配置” 插件

这个插件只要输入 token 和选择通知时机就 OK 了,比较简单
image.png

点击保存后,构建一次,消息通知长这样

image.png

注意:如果使用这个插件,在创建机器人时使用了关键词过滤,关键词最好在项目名称中包括,否则会推送消息失败!!!

优点:

  1. 可以在消息中知道构建的结果
  2. 点击标题也能跳转

缺点:

  1. 不支持自定义的标题和文本

使用 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 请求。

这里有几点需要注意:

  1. 消息的类型有几种,常见的是“text”和“link”,text 不能跳转,只是普通的消息提醒。link 能跳转,推荐使用 link
  2. 数据的格式是字符串的 json
  3. 创建机器人时使用了关键词过滤,在输入 content 和 title 时记得要包含关键字,否则推送消息会失败!!!
  4. 在拼接数据时,需要注意引号的位置,否则会说缺少数据(说多都是泪...)
  5. 注意使用变量时和引号的拼接(再次落泪...)
  6. 还有一点。。。如果想在消息中带上构建结果,千万不要在 build 中运行 curl,不要问我为什么。。。。

这里有官方的文档:

  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    53 引用 • 37 回帖
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 339 关注
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    122 引用 • 74 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...