# Drone CI DingTalk Message Plugin [![GitHub Actions](https://github.com/lddsb/drone-dingtalk-message/workflows/Publish%20to%20DockerHub%20and%20Github%20Package/badge.svg)](https://github.com/lddsb/drone-dingtalk-message/actions?query=workflow%3A%22Publish+to+DockerHub+and+Github+Package%22) [![Go Report Card](https://goreportcard.com/badge/github.com/lddsb/drone-dingtalk-message)](https://goreportcard.com/report/github.com/lddsb/drone-dingtalk-message) [![codecov](https://codecov.io/gh/lddsb/drone-dingtalk-message/branch/master/graph/badge.svg)](https://codecov.io/gh/lddsb/drone-dingtalk-message) [![Dependabot](https://api.dependabot.com/badges/status?host=github&repo=lddsb/drone-dingtalk-message&identifier=159822771)](https://app.dependabot.com/accounts/lddsb/repos/159822771) [![LICENSE: MIT](https://img.shields.io/github/license/lddsb/drone-dingtalk-message.svg?style=flat-square)](LICENSE) [中文说明](README_ZH.md) - [Drone CI Plugin Config](#drone-ci-plugin-config) - [Plugin Parameter Reference](#plugin-parameter-reference) - [TPL](#tpl) - [Screen Shot](#screen-shot) - [Development](#development) - [Todo](#todo) - [Kubernetes Users](#kubernetes-users) ### Drone CI Plugin Config `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 ``` `Use the "exec" type` ```yaml 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](https://i.imgur.com/cECppkW.jpg) - Missing Access Token ![missing-access-token](https://i.imgur.com/Su7iiyw.jpg) - Missing Message Type Or Not Support Message Type ![message-type-error](https://i.imgur.com/qtJ4DsA.jpg) - Markdown DingTalk Message(default) ![markdown-message-default](https://i.imgur.com/Bl7cT1y.jpg) - Markdown DingTalk Message(color and sha link) ![markdown-massage-customize](https://i.imgur.com/pzdFzIw.jpg) - Markdown DingTalk Message(color, pic and sha link) ![markdown-massage-customize](https://i.imgur.com/xFrCTZp.jpg) ### Development We use `go mod` to manage dependencies, so it's easy to build. - get this repo ```shell $ git clone https://github.com/lddsb/drone-dingtalk-message.git /path/to/you/want ``` - build ```shell $ cd /path/to/you/want && GO111MODULE=on go build . ``` - run ```shell $ ./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](CHANGELOG.md#124---2020-04-28).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)