mirror of
https://github.com/lddsb/drone-dingtalk-message.git
synced 2026-06-26 15:52:52 +08:00
227 lines
8.8 KiB
Markdown
227 lines
8.8 KiB
Markdown
# Drone CI的钉钉群组机器人通知插件
|
||
[](https://github.com/lddsb/drone-dingtalk-message/actions?query=workflow%3A%22Publish+to+DockerHub+and+Github+Package%22) [](https://goreportcard.com/report/github.com/lddsb/drone-dingtalk-message) [](https://codecov.io/gh/lddsb/drone-dingtalk-message) [](https://app.dependabot.com/accounts/lddsb/repos/159822771) [](LICENSE)
|
||
|
||
|
||
<!-- toc -->
|
||
|
||
- [怎么使用本插件](#%E6%80%8E%E4%B9%88%E4%BD%BF%E7%94%A8%E6%9C%AC%E6%8F%92%E4%BB%B6)
|
||
- [插件参数](#%E6%8F%92%E4%BB%B6%E5%8F%82%E6%95%B0)
|
||
- [模版](#%E6%A8%A1%E7%89%88)
|
||
- [截图展示](#%E6%88%AA%E5%9B%BE%E5%B1%95%E7%A4%BA)
|
||
- [贡献代码](#%E8%B4%A1%E7%8C%AE%E4%BB%A3%E7%A0%81)
|
||
- [未来计划](#%E6%9C%AA%E6%9D%A5%E8%AE%A1%E5%88%92)
|
||
- [Kubernetes 用户请注意](#kubernetes-%E7%94%A8%E6%88%B7%E8%AF%B7%E6%B3%A8%E6%84%8F)
|
||
|
||
<!-- tocstop -->
|
||
|
||
### 怎么使用本插件
|
||
添加一个`step`到你的`.drone.yml`中,下面是例子:
|
||
|
||
`0.8.x`
|
||
```yaml
|
||
pipeline:
|
||
...
|
||
notification:
|
||
image: lddsb/drone-dingtalk-message
|
||
token: your-group-bot-token
|
||
type: markdown
|
||
```
|
||
|
||
`1.x`
|
||
```yaml
|
||
steps:
|
||
...
|
||
- name: notification
|
||
image: lddsb/drone-dingtalk-message
|
||
settings:
|
||
token: your-groupbot-token
|
||
type: markdown
|
||
secret: your-secret-for-generate-sign
|
||
debug: true
|
||
```
|
||
|
||
`命令行版本`
|
||
```yaml
|
||
kind: pipeline
|
||
type: exec
|
||
|
||
steps:
|
||
...
|
||
|
||
- name: 通知
|
||
environment: # 使用 environment 传递参数
|
||
PLUGIN_TOKEN:
|
||
from_secret: dingtalk_token
|
||
PLUGIN_TYPE: markdown
|
||
PLUGIN_DEBUG: false
|
||
PLUGIN_TPL: /data/drone/dingtalk/tpls/markdown.tpl # tpl 的实际位置(绝对路径)
|
||
commands:
|
||
- /data/drone/dingtalk/dingtalk-message # dingtalk-message 文件的位置(绝对路径)
|
||
```
|
||
|
||
### 插件参数
|
||
`token`(必须)
|
||
|
||
你可以通过加入和创建一个群组来添加钉钉自定义机器人,添加自定义机器人完成后即可获得所需要的`access token`。
|
||
|
||
`type`(必须)
|
||
|
||
消息类型,因个人能力有限,目前仅支持`markdown`和`text`,其中,使用`markdown`可以获得最好的体验。
|
||
|
||
`secret`
|
||
|
||
如果你设置了`加签`,可以把你的`加签`密钥填入此项完成`加签`操作。
|
||
|
||
`tpl`
|
||
|
||
你可以通过该字段来自定义你的消息模版。该字段可以是一个本地路径也可以是一个远程的URL。
|
||
|
||
`debug`
|
||
|
||
通过该值可以打开`debug`模式,打印所有环境变量。
|
||
|
||
`tips_title`
|
||
|
||
你可以通过该字段自定义钉钉机器人的消息通知提醒标题。(注意,不是消息内容的标题,是收到钉钉机器人发的消息后,会有一个外显的标题)
|
||
|
||
`success_color`
|
||
|
||
你可以通过该字段自定义打包成功的颜色。比如:`008000`。
|
||
|
||
`failure_color`
|
||
|
||
你可以通过该字段自定义打包失败的颜色。比如:`FF0000`。
|
||
|
||
`success_pic`
|
||
|
||
你可以通过该字段自定义打包成功的图片。
|
||
|
||
`failure_pic`
|
||
|
||
字符串,你可以通过该字段自定义打包失败的图片。
|
||
|
||
`tpl_commit_branch_name`
|
||
|
||
你可以通过该字段自定义分支的名称,可以在模版中通过[TPL_COMMIT_BRANCH]来使用该值。
|
||
|
||
`tpl_repo_short_name`
|
||
|
||
你可以通过该字段自定义仓库的名字,可以在模版中通过[TPL_REPO_SHORT_NAME]来使用该值。
|
||
|
||
`tpl_repo_full_name`
|
||
|
||
你可以通过该字段自定义仓库的全名(包含组织名称),可以在模版中通过[TPL_REPO_FULL_NAME]来使用该值。
|
||
|
||
`tpl_build_status_success`
|
||
|
||
你可以通过该字段自定义运行成功状态的值,可以在模版中通过[TPL_BUILD_STATUS]来使用该值。(仅当前方`step`运行结果为成功时该值会生效)
|
||
|
||
`tpl_build_status_failure`
|
||
|
||
你可以通过该字段自定义运行失败状态的值,可以在模版中通过[TPL_BUILD_STATUS]来使用该值。(仅当前方`step`运行结果为失败时该值会生效)
|
||
|
||
`msg_at_mobiles`
|
||
|
||
你需要@的群成员的手机号,多个时用英文逗号(`,`)分隔。如过你使用的是 `markdown` 类型的消息,则需要在 `tpl` 文件中加入 `@手机号` 的内容。
|
||
|
||
### 模版
|
||
> `tpl` 对 `link` 类型的消息并不支持 !!!
|
||
|
||
感天动地,我们终于支持自定义模版了!下面是一个`markdown`的自定义模版例子:
|
||
|
||
# [TPL_REPO_FULL_NAME] build [TPL_BUILD_STATUS], takes [TPL_BUILD_CONSUMING]s
|
||
@mobile1 @mobile2
|
||
[TPL_COMMIT_MSG]
|
||
|
||
[TPL_COMMIT_SHA]([TPL_COMMIT_LINK])
|
||
|
||
[[TPL_AUTHOR_NAME]([TPL_AUTHOR_EMAIL])](mailto:[TPL_AUTHOR_EMAIL])
|
||
|
||
[Click To The Build Detail Page [TPL_STATUS_EMOTICON)]]([TPL_BUILD_LINK])
|
||
|
||
`mobile1` 和 `mobile2` 应该为钉钉对应的手机号码,可以放在自己想要放的位置。
|
||
|
||
你可以写自己喜欢的模版,终于不用再对默认模版发愁啦!并且模版的语法非常简单!比较可惜的是目前支持的变量还比较少,下面是当前支持的变量的列表:
|
||
|
||
| Variable | Value |
|
||
| :-------------------: | :-------------------------------------------------: |
|
||
| [TPL_REPO_SHORT_NAME] | 当前仓库的名称,比如本仓库 `drone-dingtalk-message` |
|
||
| [TPL_REPO_FULL_NAME] | 当前仓库的名称,比如本仓库 `lddsb/drone-dingtalk-message` |
|
||
| [TPL_REPO_GROUP_NAME] | 当前仓库的组织名称,比如本仓库 `lddsb` |
|
||
| [TPL_REPO_OWNER_NAME] | 当前仓库拥有者的名称 |
|
||
| [TPL_REPO_REMOTE_URL] | 当前仓库的远程地址 |
|
||
| [TPL_BUILD_STATUS] | 当前编译的状态(比如, success, failure) |
|
||
| [TPL_BUILD_LINK] | 当前编译的链接 |
|
||
| [TPL_BUILD_EVENT] | 触发当前编译的动作(比如, push, pull request等) |
|
||
| [TPL_BUILD_CONSUMING] | 当前编译耗时,单位秒 |
|
||
| [TPL_COMMIT_SHA] | 当前提交的sha |
|
||
| [TPL_COMMIT_REF] | 当前提交的ref(比如, refs/heads/master等) |
|
||
| [TPL_COMMIT_LINK] | 当前提交的远程地址 |
|
||
| [TPL_COMMIT_BRANCH] | 当前分之名称(比如, dev, master等) |
|
||
| [TPL_COMMIT_MSG] | 当前提交的信息 |
|
||
| [TPL_AUTHOR_NAME] | 当前提交作者名称 |
|
||
| [TPL_AUTHOR_EMAIL] | 当前提交作者邮箱地址 |
|
||
| [TPL_AUTHOR_USERNAME] | 当前提交作者的用户名 |
|
||
| [TPL_AUTHOR_AVATAR] | 当前提交作者的头像 |
|
||
| [TPL_STATUS_PIC] | 根据编译状态显示不同的图片 |
|
||
| [TPL_STATUS_COLOR] | 根据编译状态显示不同的颜色 |
|
||
| [TPL_STATUS_EMOTICON] | 根据编译状态显示不同的表情,比如 `:)` `:(` |
|
||
|
||
|
||
|
||
### 截图展示
|
||
- 发送成功(Drone Web)
|
||
|
||

|
||
|
||
- 忘记填写Access Token(Drone Web)
|
||
|
||

|
||
|
||
- 忘记填写消息类型或者不支持的消息类型
|
||
|
||

|
||
|
||
- 默认的`markdown`消息
|
||
|
||

|
||
|
||
- 带颜色和链接的`markdown`消息
|
||
|
||

|
||
|
||
- 带颜色、链接和图片的`markdown`消息
|
||
|
||

|
||
|
||
|
||
### 贡献代码
|
||
本项目使用了`go mod`来管理依赖,因此要编译本项目相当简单。
|
||
|
||
- 先把项目代码拷贝到本地
|
||
```shell
|
||
$ git clone https://github.com/lddsb/drone-dingtalk-message.git /path/to/you/want
|
||
```
|
||
- 然后直接执行编译即可
|
||
```shell
|
||
$ cd /path/to/you/want && GO111MODULE=on go build .
|
||
```
|
||
- 跑个`help`
|
||
```shell
|
||
$ ./drone-dingtalk-message -h
|
||
```
|
||
|
||
### 未来计划
|
||
目前仅支持 `text`, `markdown` 以及 `link` 类型的消息,建议使用`markdown`类型。
|
||
- 实现更多的消息类型
|
||
- i18N国际化直接翻译环境变量
|
||
- 批量发送给多个群机器人
|
||
- 失败重试机制
|
||
|
||
### Kubernetes 用户请注意
|
||
因为`Drone CI` [官方缺陷](https://docs.drone.io/runner/kubernetes/overview) ,所以较早版本将无法正常获取到需要用到的变量,会导致部分功能异常。为了能正常使用,所以请使用以下版本:
|
||
- `1.1`(总会是`1.1.x`的最新版本)
|
||
- `>=1.1.4`
|
||
- `1.2`(总会是`1.2.x`的最新版本)
|
||
- `>=1.2.4`
|