关于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 }}
"
}
}
实现效果如下:
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://developer.work.weixin.qq.com/document/path/91770
- Drone Webhook插件官方地址 https://plugins.drone.io/plugins/webhook
- Drone Webhook插件代码具体实现(短小精炼) https://github.com/drone-plugins/drone-webhook/blob/master/plugin.go
本文固定链接
https://www.ywlib.com/archives/push-message-to-wechat-work-by-webhook-in-drone.html