钉钉开发文档:https://developers.dingtalk.com/document/app/custom-robot-access
微信机器人:https://work.weixin.qq.com/api/doc/90000/90136/91770

1. 钉钉通知

1.1 创建群机器人

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

image.png

webhook:https://oapi.dingtalk.com/robot/send?access_token=e7c8e633c9d305b4a6bdc67297f956f43f9c2966b30d3b500eb1c49d8cbb80a1
image.png

测试:

  1. curl 'https://oapi.dingtalk.com/robot/send?access_token=e7c8e633c9d305b4a6bdc6729c49d8cbb80a1' -H 'Content-Type: application/json' -d '{"msgtype": "text","text": {"content":"构建通知我就是我, 是不一样的烟火"}}'

1.2 消息通知

其他演示使用postman测试……

文本消息通知

  1. {
  2. "at": {
  3. "atMobiles": [
  4. "15011495602"
  5. ],
  6. "atUserIds": [
  7. ""
  8. ],
  9. "isAtAll": false
  10. },
  11. "text": {
  12. "content": "DEVOPS我就是我, @kkobe 是不一样的烟火"
  13. },
  14. "msgtype": "text"
  15. }

超链接消息

  1. {
  2. "msgtype": "link",
  3. "link": {
  4. "text": "DEVOPS 这是我们训练营的课程链接",
  5. "title": "第一期JenkinsCI/CD实践训练营",
  6. "picUrl": "http://wechatapppro-1252524126.file.myqcloud.com/app7x5jejrv6551/image/compress/640480598kmgc1v610gr1.png",
  7. "messageUrl": "https://www.idevops.site/detail/term_6054ad6b126c2_MTE8oq/25"
  8. }
  9. }

MarkDown格式消息

  1. {
  2. "msgtype": "markdown",
  3. "markdown": {
  4. "title": "明天的DEVOPS课程安排",
  5. "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"
  6. },
  7. "at": {
  8. "atMobiles": [
  9. "158115965723"
  10. ],
  11. "atUserIds": [
  12. "user123"
  13. ],
  14. "isAtAll": true
  15. }
  16. }

actionCard

  1. {
  2. "actionCard": {
  3. "title": "DEVOPS第一期JenkinsCI/CD实践训练营",
  4. "text": "![screenshot](http://wechatapppro-1252524126.file.myqcloud.com/app7x5jejrv6551/image/compress/640480598kmgc1v610gr1.png) ### 第一期JenkinsCI/CD实践训练营",
  5. "btnOrientation": "0",
  6. "singleTitle" : "阅读全文",
  7. "singleURL" : "https://www.idevops.site/detail/term_6054ad6b126c2_MTE8oq/25/"
  8. },
  9. "msgtype": "actionCard"
  10. }

feedCard

  1. {
  2. "msgtype":"feedCard",
  3. "feedCard": {
  4. "links": [
  5. {
  6. "title": "第一期实践训练营",
  7. "messageURL": "https://www.dingtalk.com/",
  8. "picURL": "http://wechatapppro-1252524126.file.myqcloud.com/app7x5jejrv6551/image/compress/640480598kmgc1v610gr1.png"
  9. },
  10. {
  11. "title": "DEVOPS第二期实践训练营",
  12. "messageURL": "https://www.dingtalk.com/",
  13. "picURL": "http://wechatapppro-1252524126.file.myqcloud.com/app7x5jejrv6551/image/compress/640480598kmgc1v610gr1.png"
  14. },
  15. {
  16. "title": "DEVOPS第三期实践训练营",
  17. "messageURL": "https://www.dingtalk.com/",
  18. "picURL": "http://wechatapppro-1252524126.file.myqcloud.com/app7x5jejrv6551/image/compress/640480598kmgc1v610gr1.png"
  19. }
  20. ]
  21. }
  22. }

actionCard

  1. {
  2. "msgtype": "actionCard",
  3. "actionCard": {
  4. "title": "第一期DevOpsCI/CD实践培训课程",
  5. "text": "DEVOPS![screenshot](http://wechatapppro-1252524126.file.myqcloud.com/app7x5jejrv6551/image/compress/640480598kmgc1v610gr1.png) \n\n #### 第一期DevOpsCI/CD实践培训课程 \n\n ",
  6. "hideAvatar": "0",
  7. "btnOrientation": "0",
  8. "btns": [
  9. {
  10. "title": "内容不错",
  11. "actionURL": "https://www.dingtalk.com/"
  12. },
  13. {
  14. "title": "不感兴趣",
  15. "actionURL": "https://www.dingtalk.com/"
  16. }
  17. ]
  18. }
  19. }

2. 企业微信通知

2.1 添加群机器人

https://work.weixin.qq.com/wework_admin/frame#apps
image.png

image.png

image.png

image.png

2.2 消息通知

文本消息

  1. {
  2. "text": {
  3. "content": "DEVOPS我就是我, @kkobe 是不一样的烟火",
  4. "mentioned_list":["wangqing","@all"],
  5. "mentioned_mobile_list":["13800001111","@all"]
  6. },
  7. "msgtype": "text"
  8. }

图文消息

  1. {
  2. "msgtype": "news",
  3. "news": {
  4. "articles" : [
  5. {
  6. "title" : "第一期CICD实践",
  7. "description" : "第一期CICD实践-jenkins",
  8. "url" : "https://www.idevops.site/detail/term_6054ad6b126c2_MTE8oq/25",
  9. "picurl" : "http://wechatapppro-1252524126.file.myqcloud.com/app7x5jejrv6551/image/compress/640480598kmgc1v610gr1.png"
  10. }
  11. ]
  12. }
  13. }

markdown格式消息

  1. {
  2. "msgtype": "markdown",
  3. "markdown": {
  4. "content": "## 《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"
  5. }
  6. }

3. Jenkins 集成实践消息通知

  1. pipeline {
  2. agent {
  3. node {
  4. label "master"
  5. }
  6. }
  7. stages{
  8. stage("Dingding"){
  9. steps{
  10. script{
  11. mdText = "## DEVOPS《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"
  12. DingTalk("DEVOPS第一期Jenkins训练营", mdText, true)
  13. picurl = "http://wechatapppro-1252524126.file.myqcloud.com/app7x5jejrv6551/image/compress/640480598kmgc1v610gr1.png"
  14. WeiXin("DEVOPS第一期Jenkins训练营", "DEVOPS第一期Jenkins训练营", "${JOB_URL}", picurl)
  15. }
  16. }
  17. }
  18. }
  19. }
  20. /*
  21. def DingTalk(mdTitle, mdText, atAll, atUser = '' ){
  22. //
  23. webhook = "https://oapi.dingtalk.com/robot/send?access_token=e7c8e633c9d305b4a6bdc67297f956f43f9c2966b30d3b500eb1c49d8cbb80a1"
  24. sh """
  25. curl --location --request POST ${webhook} \
  26. --header 'Content-Type: application/json' \
  27. --data '{
  28. "msgtype": "markdown",
  29. "markdown": {
  30. "title": "${mdTitle}",
  31. "text": "${mdText}"
  32. },
  33. "at": {
  34. "atMobiles": [
  35. "${atUser}"
  36. ],
  37. "isAtAll": "${atAll}"
  38. }
  39. }'
  40. """
  41. }*/
  42. def DingTalk(title, text, atAll, atUser = '' ){
  43. //
  44. webhook = "https://oapi.dingtalk.com/robot/send?access_token=e7c8e633c9d305b4a6bdc67297f956f43f9c2966b30d3b500eb1c49d8cbb80a1"
  45. sh """
  46. curl --location --request POST ${webhook} \
  47. --header 'Content-Type: application/json' \
  48. --data '{
  49. "msgtype": "text",
  50. "text": {
  51. "content": "${text}"
  52. },
  53. "at": {
  54. "atMobiles": [
  55. "${atUser}"
  56. ],
  57. "isAtAll": "${atAll}"
  58. }
  59. }'
  60. """
  61. }
  62. def WeiXin(title, desc, url, picurl){
  63. webhook = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=64aa7589-290a-45ef-8d8a-bcb9650cba9c"
  64. sh """
  65. curl --location --request POST ${webhook} \
  66. --header 'Content-Type: application/json' \
  67. --data '{
  68. "msgtype": "news",
  69. "news": {
  70. "articles" : [
  71. {
  72. "title" : "${title}",
  73. "description" : "${desc}",
  74. "url" : "${url}",
  75. "picurl" : "${picurl}"
  76. }
  77. ]
  78. }
  79. }'
  80. """
  81. }