Skip to content

lddsb/drone-dingtalk-message

Repository files navigation

Drone CI DingTalk Message Plugin

GitHub Actions Go Report Card codecov Dependabot LICENSE: MIT

中文说明

Drone CI Plugin Config

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

Use the "exec" type

kind: pipeline
type: exec

steps:
...

- name: notification
  environment:  # Using environment to pass parameters
    PLUGIN_TOKEN:
      from_secret: dingtalk_token
    PLUGIN_TYPE: markdown
    PLUGIN_DEBUG: false
    PLUGIN_TPL: /data/drone/dingtalk/tpls/markdown.tpl  # The actual location (absolute path) of the tpl.
  commands:
    - /data/drone/dingtalk/dingtalk-message   # Location of the "dingtalk-message" file (absolute path)

Plugin Parameter Reference

token(required)

String. Access token for group bot. (you can get the access token when you add a bot in a group)

type(required)

String. Message type, plan support text, markdown, link and action card, but due to time issue, it's only support markdown and text now, and you can get the best experience by use markdown.

secret

String. Secret for generate sign.

tpl

String. Your custom tpl, it can be a local path, or a remote http link.

debug Boolean. Debug mode.

tips_title

String. You can customize the title for the message tips, just work when message type is markdown.

success_color

String. You can customize the color for the build success message by this option, you should input a hex color, example: 008000.

failure_color

String. You can customize the color for the build success message by this option, you should input a hex color, example: FF0000.

success_pic

String. You can customize the picture for the build success message by this option.

failure_pic

String. You can customize the picture for the build failure message by this option.

tpl_commit_branch_name

String. You can customize the [TPL_COMMIT_BRANCH] by this configuration item.

tpl_repo_short_name

String. You can customize the [TPL_REPO_SHORT_NAME] by this configuration item.

tpl_repo_full_name

String. You can customize the [TPL_REPO_FULL_NAME] by this configuration item.

tpl_build_status_success

String. You can customize the [TPL_BUILD_STATUS] (when status=success) by this configuration item.

tpl_build_status_failure

String. You can customize the [TPL_BUILD_STATUS] (when status=failure) by this configuration item.

msg_at_mobiles

String. You want at's phone number in the group, if you need at multi phone numbers, you can use , to separate. (if you use markdown type, you need define the at content in your tpl file)

TPL

tpl won't work with message type link !!!

That's a good news, we support tpl now.This is an example for markdown message:

# [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])

You can write your own tpl what you want. The syntax of tpl is very simple, you can fill tpl with preset variables. It's a list of currently supported preset variables:

Variable Value
[TPL_REPO_SHORT_NAME] current repo name(bare name)
[TPL_REPO_FULL_NAME] the full name(with group name) of current repo
[TPL_REPO_GROUP_NAME] the group name of current repo
[TPL_REPO_OWNER_NAME] the owner name of current repo
[TPL_REPO_REMOTE_URL] the remote url of current repo
[TPL_BUILD_STATUS] current build status(e.g., success, failure)
[TPL_BUILD_LINK] current build link
[TPL_BUILD_EVENT] current build event(e.g., push, pull request, etc.)
[TPL_BUILD_CONSUMING] current build consuming, second
[TPL_COMMIT_SHA] current commit sha
[TPL_COMMIT_REF] current commit ref(e.g., refs/heads/master, etc.)
[TPL_COMMIT_LINK] current commit remote url link
[TPL_COMMIT_BRANCH] current branch name(e.g., dev, etc)
[TPL_COMMIT_MSG] current commit message
[TPL_AUTHOR_NAME] current commit author name
[TPL_AUTHOR_EMAIL] current commit author email
[TPL_AUTHOR_USERNAME] current commit author username
[TPL_AUTHOR_AVATAR] current commit author avatar
[TPL_STATUS_PIC] custom pic for build status
[TPL_STATUS_COLOR] custom color for build status
[TPL_STATUS_EMOTICON] custom emoticon for build status

Screen Shot

  • Send Success

send-success

  • Missing Access Token

missing-access-token

  • Missing Message Type Or Not Support Message Type

message-type-error

  • Markdown DingTalk Message(default)

markdown-message-default

  • Markdown DingTalk Message(color and sha link)

markdown-massage-customize

  • Markdown DingTalk Message(color, pic and sha link)

markdown-massage-customize

Development

We use go mod to manage dependencies, so it's easy to build.

  • get this repo
$ git clone https://github.com/lddsb/drone-dingtalk-message.git /path/to/you/want
  • build
$ cd /path/to/you/want && GO111MODULE=on go build .
  • run
$ ./drone-dingtalk-message -h

TODO

It's sad, just support text, markdown and link type now.

  • implement all message type
  • i18N
  • batch send
  • retry(e.g., network error, etc.)

Kubernetes Users

Attention kubernetes users, CHANGELOG.It's the available versions:

  • 1.1(always latest for 1.1.x)
  • >=1.1.4
  • 1.2(always latest for 1.2.x)
  • >=1.2.4
  • latest(always latest)