在做流水线提交的时候,经常会说谁提交的代码,触发了流水线,导致流水线成功或者失败,这都有一个消息的反馈和通知。
之前版本控制的时候有邮件通知,开发同学在gitlab上面提交了代码,然后会自动的触发Jenkins,gitlab在触发Jenkins的时候会传递一些参数,比如项目的信息和提交人的信息。比如谁提交的,邮箱是多少,这些会传递到Jenkins里面来。Jenkins被gitlab触发之后就会进行构建,最后成功或者失败都会有一个Email通知发给提交人。
钉钉与消息通知
- 钉钉开发文档:自定义机器人接入 - 钉钉开放平台
1. 钉钉通知
1.1 创建群机器人

添加完机器人之后会给你生成一个链接,调用这个链接就可以往这个群里面发送消息 ,为了避免有些时候,有人把这个泄露出去了,别人拿到会发一些垃圾消息搞破坏,所以机器人这里有个安全的设置
- 自定义关键词:最多可以设置10个关键词,消息中至少包含其中1个关键词才可以发送成功。例如添加了一个自定义关键词:监控报警,则这个机器人所发送的消息,必须包含监控报警这个词,才能发送成功。
- IP地址(段):设定后,只有来自IP地址范围内的请求才会被正常处理。支持两种设置方式:IP地址和IP地址段,暂不支持IPv6地址白名单,格式如下。
格式 | 说明 |
1.1.1.1 | 开发者的出口公网IP地址(非局域网地址) |
1.1.1.0/24 | 用CIDR表示的一个网段 |
有了webhook之后就可以向其发送请求,钉钉的消息类型和数据格式:消息类型和数据格式 - 钉钉开放平台
因为关键字里面没有构建通知,所以消息会发送失败。
#post请求地址
https://oapi.dingtalk.com/robot/send?access_token=a054e493663471009fc3aad90bda43cf738903ad29a49e996ef69711957e1603
#消息格式
{
"at": {
"atMobiles": [
"15011495602"
],
"atUserIds": [
""
],
"isAtAll": true
},
"text": {
"content": "构建通知 DEVOPS我就是我, @kkobe 是不一样的烟火"
},
"msgtype": "text"
}
这样就将一条消息发出去并且@所有人了。在往Jenkins流水线里面去放就是封装为http请求了,比如使用curl命令。
curl --location --request POST 'https://oapi.dingtalk.com/robot/send?access_token=a054e493663471009fc3aad90bda43cf738903ad29a49e996ef69711957e1603' \
--header 'Content-Type: application/json' \
--data-raw '{
"at": {
"atMobiles": [
"15011495602"
],
"atUserIds": [
""
],
"isAtAll": true
},
"text": {
"content": "构建通知 DEVOPS我就是我, @kkobe 是不一样的烟火"
},
"msgtype": "text"
}'
超链接消息
MarkDown格式消息
curl --location --request POST 'https://oapi.dingtalk.com/robot/send?access_token=a054e493663471009fc3aad90bda43cf738903ad29a49e996ef69711957e1603' \
--header 'Content-Type: application/json' \
--data-raw '{
"msgtype": "markdown",
"markdown": {
"title": "明天的DEVOPS课程安排",
"text": "## 构建通知 《Jenkins实践扩展》 \n ### 1.内容1 \n ### 2.内容1 \n ### 3.内容1 \n ### 4.内容1 \n> \n> ###### 更多详细信息点击 [课程链接](https://www.idevops.site/detail/term_6054ad6b126c2_MTE8oq/25) \n"
},
"at": {
"atMobiles": [
"158115965723"
],
"atUserIds": [
"user123"
],
"isAtAll": true
}
}'
actionCard
{
"actionCard": {
"title": "DEVOPS第一期JenkinsCI/CD实践训练营",
"text": " ### 第一期JenkinsCI/CD实践训练营",
"btnOrientation": "0",
"singleTitle" : "阅读全文",
"singleURL" : "https://www.idevops.site/detail/term_6054ad6b126c2_MTE8oq/25/"
},
"msgtype": "actionCard"
}
feedCard
{
"msgtype":"feedCard",
"feedCard": {
"links": [
{
"title": "第一期实践训练营",
"messageURL": "https://www.dingtalk.com/",
"picURL": "http://wechatapppro-1252524126.file.myqcloud.com/app7x5jejrv6551/image/compress/640480598kmgc1v610gr1.png"
},
{
"title": "DEVOPS第二期实践训练营",
"messageURL": "https://www.dingtalk.com/",
"picURL": "http://wechatapppro-1252524126.file.myqcloud.com/app7x5jejrv6551/image/compress/640480598kmgc1v610gr1.png"
},
{
"title": "DEVOPS第三期实践训练营",
"messageURL": "https://www.dingtalk.com/",
"picURL": "http://wechatapppro-1252524126.file.myqcloud.com/app7x5jejrv6551/image/compress/640480598kmgc1v610gr1.png"
}
]
}
}
上面就是-------------->添加机器人---------->获取webhook----------->然后通过postman去测试------->各种消息的结构体。