天天看点

Jenkins 实践扩展 企业微信消息通知1. 钉钉通知

在做流水线提交的时候,经常会说谁提交的代码,触发了流水线,导致流水线成功或者失败,这都有一个消息的反馈和通知。

之前版本控制的时候有邮件通知,开发同学在gitlab上面提交了代码,然后会自动的触发Jenkins,gitlab在触发Jenkins的时候会传递一些参数,比如项目的信息和提交人的信息。比如谁提交的,邮箱是多少,这些会传递到Jenkins里面来。Jenkins被gitlab触发之后就会进行构建,最后成功或者失败都会有一个Email通知发给提交人。

钉钉与消息通知

  • 钉钉开发文档:自定义机器人接入 - 钉钉开放平台

1. 钉钉通知

1.1 创建群机器人

Jenkins 实践扩展 企业微信消息通知1. 钉钉通知
Jenkins 实践扩展 企业微信消息通知1. 钉钉通知
Jenkins 实践扩展 企业微信消息通知1. 钉钉通知
Jenkins 实践扩展 企业微信消息通知1. 钉钉通知

添加完机器人之后会给你生成一个链接,调用这个链接就可以往这个群里面发送消息 ,为了避免有些时候,有人把这个泄露出去了,别人拿到会发一些垃圾消息搞破坏,所以机器人这里有个安全的设置

  • 自定义关键词:最多可以设置10个关键词,消息中至少包含其中1个关键词才可以发送成功。例如添加了一个自定义关键词:监控报警,则这个机器人所发送的消息,必须包含监控报警这个词,才能发送成功。
  • IP地址(段):设定后,只有来自IP地址范围内的请求才会被正常处理。支持两种设置方式:IP地址和IP地址段,暂不支持IPv6地址白名单,格式如下。
格式 说明
1.1.1.1 开发者的出口公网IP地址(非局域网地址)
1.1.1.0/24 用CIDR表示的一个网段

有了webhook之后就可以向其发送请求,钉钉的消息类型和数据格式:消息类型和数据格式 - 钉钉开放平台

因为关键字里面没有构建通知,所以消息会发送失败。 

Jenkins 实践扩展 企业微信消息通知1. 钉钉通知
Jenkins 实践扩展 企业微信消息通知1. 钉钉通知
Jenkins 实践扩展 企业微信消息通知1. 钉钉通知
#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"
}'
           

超链接消息 

Jenkins 实践扩展 企业微信消息通知1. 钉钉通知
Jenkins 实践扩展 企业微信消息通知1. 钉钉通知

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>  ![screenshot](http://wechatapppro-1252524126.file.myqcloud.com/app7x5jejrv6551/image/compress/640480598kmgc1v610gr1.png)\n> ###### 更多详细信息点击 [课程链接](https://www.idevops.site/detail/term_6054ad6b126c2_MTE8oq/25) \n"
    },
    "at": {
        "atMobiles": [
            "158115965723"
        ],
        "atUserIds": [
            "user123"
        ],
        "isAtAll": true
    }
}'
           
Jenkins 实践扩展 企业微信消息通知1. 钉钉通知

 actionCard

{
    "actionCard": {
        "title": "DEVOPS第一期JenkinsCI/CD实践训练营", 
        "text": "![screenshot](http://wechatapppro-1252524126.file.myqcloud.com/app7x5jejrv6551/image/compress/640480598kmgc1v610gr1.png) ### 第一期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去测试------->各种消息的结构体。