Files
2024-04-11 20:31:13 +08:00

8.8 KiB
Raw Permalink Blame History

Drone CI的钉钉群组机器人通知插件

GitHub Actions Go Report Card codecov Dependabot LICENSE: MIT

怎么使用本插件

添加一个step到你的.drone.yml中,下面是例子:

0.8.x

pipeline:
  ...
  notification:
    image: lddsb/drone-dingtalk-message
    token: your-group-bot-token
    type: markdown

1.x

steps:
...
- name: notification
  image: lddsb/drone-dingtalk-message
  settings:
    token: your-groupbot-token
    type: markdown
    secret: your-secret-for-generate-sign
    debug: true

命令行版本

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(必须)

消息类型,因个人能力有限,目前仅支持markdowntext,其中,使用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 文件中加入 @手机号 的内容。

模版

tpllink 类型的消息并不支持 !!!

感天动地,我们终于支持自定义模版了!下面是一个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])

mobile1mobile2 应该为钉钉对应的手机号码,可以放在自己想要放的位置。

你可以写自己喜欢的模版,终于不用再对默认模版发愁啦!并且模版的语法非常简单!比较可惜的是目前支持的变量还比较少,下面是当前支持的变量的列表:

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

send-success

  • 忘记填写Access TokenDrone Web

missing-access-token

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

message-type-error

  • 默认的markdown消息

markdown-message-default

  • 带颜色和链接的markdown消息

markdown-massage-customize

  • 带颜色、链接和图片的markdown消息

markdown-massage-customize

贡献代码

本项目使用了go mod来管理依赖,因此要编译本项目相当简单。

  • 先把项目代码拷贝到本地
$ git clone https://github.com/lddsb/drone-dingtalk-message.git /path/to/you/want
  • 然后直接执行编译即可
$ cd /path/to/you/want && GO111MODULE=on go build .
  • 跑个help
$ ./drone-dingtalk-message -h

未来计划

目前仅支持 text, markdown 以及 link 类型的消息,建议使用markdown类型。

  • 实现更多的消息类型
  • i18N国际化直接翻译环境变量
  • 批量发送给多个群机器人
  • 失败重试机制

Kubernetes 用户请注意

因为Drone CI 官方缺陷 ,所以较早版本将无法正常获取到需要用到的变量,会导致部分功能异常。为了能正常使用,所以请使用以下版本:

  • 1.1(总会是1.1.x的最新版本)
  • >=1.1.4
  • 1.2(总会是1.2.x的最新版本)
  • >=1.2.4