在Drone中利用Webhook插件实现企业微信机器人消息推送

发布时间:2022年09月03日 // 分类:代码 // 暂无评论

关于Drone

Drone是一个基于Golang实现的CI/CD工具。不同于传统Jenkins或Gitlab巨大的资源占用。得益于Golang短小精悍的特性,在Drone中使用pipline文件,可以实现相当复杂的构建部署工作。甚至可以自己编写插件参与到构建流程中。

企业微信机器人Webhook消息推送

自动化CI/CD过程中,即时推送构建部署结果,可以带来很棒的DevOps体验。典型的DevOps实践中,最好能整一个敏捷大屏,展示最新的提交、构建、部署情况。但是大多数公司或者开发项目组里,并没有单独配备这样的设备。退而求其次,利用办公IM软件,在项目组群内推送消息则是一个比较好的选择。不论是钉钉、飞书还是企业微信,都提供了群机器人Webhook功能。利用这个机制,我们可以轻而易举达成需求。

虽然Drone插件市场里有微信插件,但并不支持企业微信机器人。所以需要我们自己用Webhook实现。

Drone Webhook 配置示例

下面以构建一个Golang项目为例子,简单演示一下Webhook消息推送:

kind: pipeline
type: docker
name: default

# document: https://www.ywlib.com/archives/push-message-to-wechat-work-by-webhook-in-drone.html

steps:

  - name: build
    image: golang:1.19-buster
    environment:
      GOPROXY: https://goproxy.cn,direct
      CGO_ENABLED: 0
    commands:
      - go build -o app cmd/run.go
  
  - name: notify
    image: plugins/webhook
    settings:
      urls: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=替换成你的机器人key
      content_type: application/json
      template: |
        {
          "msgtype": "markdown",
          "markdown": {
              "content": "{{#success build.status}}✅{{else}}❌{{/success}}**{{ repo.owner }}/{{ repo.name }}** (Build #{{build.number}})\n
                          >**构建结果**: {{ build.status }}
                          >**构建详情**: [点击查看]({{ build.link }})
                          >**代码分支**: {{ build.branch }}
                          >**提交标识**: {{ build.commit }}
                          >**提交发起**: {{ build.author }}
                          >**提交信息**: {{ build.message }}
        "
          }
        }

实现效果如下:
wechat work bot webhook notify demo

Drone Webhook 插件可用模板变量列表

在Webhook官方文档中,并未提供模板变量信息。

好在插件本身代码非常简单,根据源代码,这里整理出来供参考:

  • reop.owner
  • repo.name
  • build.tag
  • build.event
  • build.number
  • build.commit
  • build.ref
  • build.branch
  • build.author
  • build.message
  • build.status
  • build.link
  • build.deployTo
  • build.started
  • build.created
  • job.started

拓展阅读

本文固定链接
https://www.ywlib.com/archives/push-message-to-wechat-work-by-webhook-in-drone.html

标签
drone, 企业微信群机器人, webhook, ci/cd

添加新评论 »