Compare commits

...

8 Commits

Author SHA1 Message Date
lddsb 526b8eec46 docs: update README for at mobiles 2021-07-02 23:13:05 +08:00
lddsb 8729ae05b4 feat: add at mobiles tpl 2021-07-02 23:01:24 +08:00
dependabot[bot] cec9f81f52 build(deps): bump github.com/lddsb/dingtalk-webhook from 0.0.4 to 0.0.5
Bumps [github.com/lddsb/dingtalk-webhook](https://github.com/lddsb/dingtalk-webhook) from 0.0.4 to 0.0.5.
- [Release notes](https://github.com/lddsb/dingtalk-webhook/releases)
- [Commits](https://github.com/lddsb/dingtalk-webhook/compare/v0.0.4...v0.0.5)

---
updated-dependencies:
- dependency-name: github.com/lddsb/dingtalk-webhook
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-02 22:01:57 +08:00
dependabot-preview[bot] 428577470d Upgrade to GitHub-native Dependabot 2021-06-26 23:30:42 +08:00
lddsb 7c8a85bcc4 fix: release.yaml go-version error 2020-12-19 15:53:16 +08:00
lddsb ecf4f89e0a feat: use goreleaser for release tool 2020-12-19 15:39:10 +08:00
lddsb e7ef2de488 feat: support custom started at and finished at 2020-12-19 11:59:45 +08:00
lddsb acd708ada3 docs: update readme and changelog for 1.2.5 2020-12-16 17:48:07 +08:00
14 changed files with 229 additions and 44 deletions
+8
View File
@@ -0,0 +1,8 @@
version: 2
updates:
- package-ecosystem: gomod
directory: "/"
schedule:
interval: daily
time: "10:00"
open-pull-requests-limit: 10
+2 -2
View File
@@ -28,8 +28,8 @@ jobs:
if [[ $VERSION =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then if [[ $VERSION =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
MINOR=${VERSION%.*} MINOR=${VERSION%.*}
MAJOR=${MINOR%.*} MAJOR=${MINOR%.*}
TAGS="$TAGS,${DOCKER_IMAGE}:${MINOR},${DOCKER_IMAGE}:${MAJOR}" TAGS="$TAGS,${DOCKER_IMAGE}:${MINOR},${DOCKER_IMAGE}:${MAJOR},${DOCKER_IMAGE}:latest"
TAGS="$TAGS,${GITHUB_IMAGE}:${VERSION},${GITHUB_IMAGE}:${MINOR},${GITHUB_IMAGE}:${MAJOR}" TAGS="$TAGS,${GITHUB_IMAGE}:${VERSION},${GITHUB_IMAGE}:${MINOR},${GITHUB_IMAGE}:${MAJOR},${GITHUB_IMAGE}:latest"
fi fi
echo ::set-output name=tags::${TAGS} echo ::set-output name=tags::${TAGS}
- name: Setup Docker Buildx - name: Setup Docker Buildx
+25
View File
@@ -0,0 +1,25 @@
name: Publish release
on:
push:
tags:
- "v*"
jobs:
release:
name: publish release, upload asset
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.15.6
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v2
with:
version: latest
args: release --rm-dist
env:
GITHUB_TOKEN: ${{ secrets.CR_PAT }}
+49
View File
@@ -0,0 +1,49 @@
env:
- GO111MODULE=on
before:
hooks:
- go mod download
builds:
- env:
- CGO_ENABLED=0
goos:
- linux
- darwin
- windows
goarch:
- 386
- amd64
- arm
- arm64
mod_timestamp: '{{ .CommitTimestamp }}'
binary: dingtalk-message
flags:
- -trimpath
ldflags:
- -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{ .CommitDate }} -X main.builtBy=goreleaser
checksum:
name_template: '{{ .ProjectName }}_checksums.txt'
changelog:
sort: asc
filters:
exclude:
- '^docs:'
- '^test:'
- Merge pull request
- Merge branch
- go mod tidy
archives:
- name_template: '{{ .ProjectName }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}'
replacements:
darwin: Darwin
linux: Linux
windows: Windows
386: i386
amd64: x86_64
format_overrides:
- goos: windows
format: zip
files:
- README.md
- LICENSE
- tpls/*
+9 -2
View File
@@ -2,6 +2,12 @@
## [Unreleased] ## [Unreleased]
## [1.2.5] - 2020-12-16
### Added:
* The TPL can use environment variables.
* Debug mode.
* Use GitHub Actions for automation.
## [1.2.4] - 2020-04-28 ## [1.2.4] - 2020-04-28
### Fixed: ### Fixed:
* kubernetes runner missing env, [details](https://docs.drone.io/runner/kubernetes/overview) * kubernetes runner missing env, [details](https://docs.drone.io/runner/kubernetes/overview)
@@ -20,7 +26,7 @@
## [1.2.0] - 2019-09-24 ## [1.2.0] - 2019-09-24
### Added: ### Added:
* Support custom tpl. * Support custom TPL.
## [1.1.4] - 2020-04-28 ## [1.1.4] - 2020-04-28
### Fixed: ### Fixed:
@@ -50,7 +56,8 @@
### Added: ### Added:
* Auto publish image to DockerHub. * Auto publish image to DockerHub.
[Unreleased]: https://github.com/lddsb/drone-dingtalk-message/compare/v1.2.4...HEAD [Unreleased]: https://github.com/lddsb/drone-dingtalk-message/compare/v1.2.5...HEAD
[1.2.5]: https://github.com/lddsb/drone-dingtalk-message/compare/v1.2.4...v1.2.5
[1.2.4]: https://github.com/lddsb/drone-dingtalk-message/compare/v1.2.3...v1.2.4 [1.2.4]: https://github.com/lddsb/drone-dingtalk-message/compare/v1.2.3...v1.2.4
[1.2.3]: https://github.com/lddsb/drone-dingtalk-message/compare/v1.2.2...v1.2.3 [1.2.3]: https://github.com/lddsb/drone-dingtalk-message/compare/v1.2.2...v1.2.3
[1.2.2]: https://github.com/lddsb/drone-dingtalk-message/compare/v1.2.1...v1.2.2 [1.2.2]: https://github.com/lddsb/drone-dingtalk-message/compare/v1.2.1...v1.2.2
+13 -5
View File
@@ -1,5 +1,5 @@
# Drone CI DingTalk Message Plugin # Drone CI DingTalk Message Plugin
[![Docker Cloud Build Status](https://img.shields.io/docker/cloud/build/lddsb/drone-dingtalk-message)](https://hub.docker.com/r/lddsb/drone-dingtalk-message) [![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) [![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) [中文说明](README_ZH.md)
@@ -28,9 +28,6 @@ pipeline:
`1.x` `1.x`
```yaml ```yaml
kind: pipeline
name: default
steps: steps:
... ...
- name: notification - name: notification
@@ -39,7 +36,7 @@ steps:
token: your-groupbot-token token: your-groupbot-token
type: markdown type: markdown
secret: your-secret-for-generate-sign secret: your-secret-for-generate-sign
debug: true
``` ```
### Plugin Parameter Reference ### Plugin Parameter Reference
@@ -59,6 +56,9 @@ String. Secret for generate sign.
String. Your custom `tpl`, it can be a local path, or a remote http link. String. Your custom `tpl`, it can be a local path, or a remote http link.
`debug`
Boolean. Debug mode.
`tips_title` `tips_title`
String. You can customize the title for the message tips, just work when message type is markdown. String. You can customize the title for the message tips, just work when message type is markdown.
@@ -99,12 +99,17 @@ String. You can customize the [TPL_BUILD_STATUS] (when status=`success`) by this
String. You can customize the [TPL_BUILD_STATUS] (when status=`failure`) by this configuration item. 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
> `tpl` won't work with message type `link` !!! > `tpl` won't work with message type `link` !!!
That's a good news, we support `tpl` now.This is an example for `markdown` message: 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 # [TPL_REPO_FULL_NAME] build [TPL_BUILD_STATUS], takes [TPL_BUILD_CONSUMING]s
@mobile1 @mobile2
[TPL_COMMIT_MSG] [TPL_COMMIT_MSG]
[TPL_COMMIT_SHA]([TPL_COMMIT_LINK]) [TPL_COMMIT_SHA]([TPL_COMMIT_LINK])
@@ -185,6 +190,9 @@ $ ./drone-dingtalk-message -h
### Todo ### Todo
It's sad, just support `text`, `markdown` and `link` type now. It's sad, just support `text`, `markdown` and `link` type now.
- implement all message type - implement all message type
- i18N
- batch send
- retry(e.g., network error, etc.)
### Kubernetes Users ### Kubernetes Users
Attention kubernetes users, [CHANGELOG](CHANGELOG.md#124---2020-04-28).It's the available versions: Attention kubernetes users, [CHANGELOG](CHANGELOG.md#124---2020-04-28).It's the available versions:
+18 -6
View File
@@ -1,5 +1,6 @@
# Drone CI的钉钉群组机器人通知插件 # Drone CI的钉钉群组机器人通知插件
[![Docker Cloud Build Status](https://img.shields.io/docker/cloud/build/lddsb/drone-dingtalk-message)](https://hub.docker.com/r/lddsb/drone-dingtalk-message) [![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) [![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)
<!-- toc --> <!-- toc -->
@@ -28,9 +29,6 @@ pipeline:
`1.x` `1.x`
```yaml ```yaml
kind: pipeline
name: default
steps: steps:
... ...
- name: notification - name: notification
@@ -39,7 +37,7 @@ steps:
token: your-groupbot-token token: your-groupbot-token
type: markdown type: markdown
secret: your-secret-for-generate-sign secret: your-secret-for-generate-sign
debug: true
``` ```
### 插件参数 ### 插件参数
@@ -59,6 +57,10 @@ steps:
你可以通过该字段来自定义你的消息模版。该字段可以是一个本地路径也可以是一个远程的URL。 你可以通过该字段来自定义你的消息模版。该字段可以是一个本地路径也可以是一个远程的URL。
`debug`
通过该值可以打开`debug`模式,打印所有环境变量。
`tips_title` `tips_title`
你可以通过该字段自定义钉钉机器人的消息通知提醒标题。(注意,不是消息内容的标题,是收到钉钉机器人发的消息后,会有一个外显的标题) 你可以通过该字段自定义钉钉机器人的消息通知提醒标题。(注意,不是消息内容的标题,是收到钉钉机器人发的消息后,会有一个外显的标题)
@@ -99,12 +101,17 @@ steps:
你可以通过该字段自定义运行失败状态的值,可以在模版中通过[TPL_BUILD_STATUS]来使用该值。(仅当前方`step`运行结果为失败时该值会生效) 你可以通过该字段自定义运行失败状态的值,可以在模版中通过[TPL_BUILD_STATUS]来使用该值。(仅当前方`step`运行结果为失败时该值会生效)
`msg_at_mobiles`
你需要@的群成员的手机号,多个时用英文逗号(`,`)分隔。如过你使用的是 `markdown` 类型的消息,则需要在 `tpl` 文件中加入 `@手机号` 的内容。
### 模版 ### 模版
> `tpl` 对 `link` 类型的消息并不支持 !!! > `tpl` 对 `link` 类型的消息并不支持 !!!
感天动地,我们终于支持自定义模版了!下面是一个`markdown`的自定义模版例子: 感天动地,我们终于支持自定义模版了!下面是一个`markdown`的自定义模版例子:
# [TPL_REPO_FULL_NAME] build [TPL_BUILD_STATUS], takes [TPL_BUILD_CONSUMING]s # [TPL_REPO_FULL_NAME] build [TPL_BUILD_STATUS], takes [TPL_BUILD_CONSUMING]s
@mobile1 @mobile2
[TPL_COMMIT_MSG] [TPL_COMMIT_MSG]
[TPL_COMMIT_SHA]([TPL_COMMIT_LINK]) [TPL_COMMIT_SHA]([TPL_COMMIT_LINK])
@@ -113,6 +120,8 @@ steps:
[Click To The Build Detail Page [TPL_STATUS_EMOTICON)]]([TPL_BUILD_LINK]) [Click To The Build Detail Page [TPL_STATUS_EMOTICON)]]([TPL_BUILD_LINK])
`mobile1``mobile2` 应该为钉钉对应的手机号码,可以放在自己想要放的位置。
你可以写自己喜欢的模版,终于不用再对默认模版发愁啦!并且模版的语法非常简单!比较可惜的是目前支持的变量还比较少,下面是当前支持的变量的列表: 你可以写自己喜欢的模版,终于不用再对默认模版发愁啦!并且模版的语法非常简单!比较可惜的是目前支持的变量还比较少,下面是当前支持的变量的列表:
| Variable | Value | | Variable | Value |
@@ -186,10 +195,13 @@ $ ./drone-dingtalk-message -h
### 未来计划 ### 未来计划
目前仅支持 `text`, `markdown` 以及 `link` 类型的消息,建议使用`markdown`类型。 目前仅支持 `text`, `markdown` 以及 `link` 类型的消息,建议使用`markdown`类型。
- 实现更多的消息类型 - 实现更多的消息类型
- i18N国际化直接翻译环境变量
- 批量发送给多个群机器人
- 失败重试机制
### Kubernetes 用户请注意 ### Kubernetes 用户请注意
因为`Drone CI` [官方缺陷](https://docs.drone.io/runner/kubernetes/overview) ,所以较早版本将无法正常获取到需要用到的变量,会导致部分功能异常。为了能正常使用,所以请使用以下版本: 因为`Drone CI` [官方缺陷](https://docs.drone.io/runner/kubernetes/overview) ,所以较早版本将无法正常获取到需要用到的变量,会导致部分功能异常。为了能正常使用,所以请使用以下版本:
- `1.1`(总会是`1.1.x`的最新版本) - `1.1`(总会是`1.1.x`的最新版本)
- `>=1.1.4` - `>=1.1.4`
- `1.2`(总会是`1.2.x`的最新版本) - `1.2`(总会是`1.2.x`的最新版本)
- `>=1.2.4` - `>=1.2.4`
+1 -1
View File
@@ -4,6 +4,6 @@ go 1.12
require ( require (
github.com/joho/godotenv v1.3.0 github.com/joho/godotenv v1.3.0
github.com/lddsb/dingtalk-webhook v0.0.4 github.com/lddsb/dingtalk-webhook v0.0.5
github.com/urfave/cli v1.22.5 github.com/urfave/cli v1.22.5
) )
+2 -8
View File
@@ -3,20 +3,14 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSY
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc=
github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
github.com/lddsb/dingtalk-webhook v0.0.4 h1:gAJFy66L2gZ5j6kDrHRoz/zQFaNamcObtetNonq76RA= github.com/lddsb/dingtalk-webhook v0.0.5 h1:EOSXvcpN4IC7fXSAheI3OLJwwOGEPlGDV7xje1fQuJo=
github.com/lddsb/dingtalk-webhook v0.0.4/go.mod h1:dwNU75Sog87wJXAFcY5mDFM7eW4hIdX7bNemrN92pH0= github.com/lddsb/dingtalk-webhook v0.0.5/go.mod h1:dwNU75Sog87wJXAFcY5mDFM7eW4hIdX7bNemrN92pH0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/urfave/cli v1.22.2 h1:gsqYFH8bb9ekPA12kRo0hfjngWQjkJPlN9R0N78BoUo=
github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
github.com/urfave/cli v1.22.3 h1:FpNT6zq26xNpHZy08emi755QwzLPs6Pukqjlc7RfOMU=
github.com/urfave/cli v1.22.3/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
github.com/urfave/cli v1.22.4 h1:u7tSpNPPswAFymm8IehJhy4uJMlUuU/GmqSkvJ1InXA=
github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
github.com/urfave/cli v1.22.5 h1:lNq9sAHXK2qfdI8W+GRItjCEkI+2oR4d+MEHy1CKXoU= github.com/urfave/cli v1.22.5 h1:lNq9sAHXK2qfdI8W+GRItjCEkI+2oR4d+MEHy1CKXoU=
github.com/urfave/cli v1.22.5/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.5/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+38 -10
View File
@@ -11,7 +11,7 @@ import (
) )
// Version of cli // Version of cli
var Version = "0.2.1130" var Version = "0.2.1219"
func main() { func main() {
app := cli.NewApp() app := cli.NewApp()
@@ -29,7 +29,7 @@ func main() {
app.Version = Version app.Version = Version
app.Flags = []cli.Flag{ app.Flags = []cli.Flag{
cli.BoolFlag{ cli.BoolFlag{
Name: "config.debug", Name: "config.debug,debug",
Usage: "debug mode", Usage: "debug mode",
EnvVar: "PLUGIN_DEBUG", EnvVar: "PLUGIN_DEBUG",
}, },
@@ -49,17 +49,17 @@ func main() {
EnvVar: "PLUGIN_SECRET", EnvVar: "PLUGIN_SECRET",
}, },
cli.StringFlag{ cli.StringFlag{
Name: "config.message.type,message_type", Name: "config.message.type,message_type,type",
Usage: "DingTalk message type, like text, markdown, action card, link and feed card...", Usage: "DingTalk message type, like text, markdown, action card, link and feed card...",
EnvVar: "PLUGIN_MSG_TYPE,PLUGIN_TYPE,PLUGIN_MESSAGE_TYPE", EnvVar: "PLUGIN_MSG_TYPE,PLUGIN_TYPE,PLUGIN_MESSAGE_TYPE",
}, },
cli.StringFlag{ cli.StringFlag{
Name: "config.message.at.all", Name: "config.message.at.all,at.all",
Usage: "at all in a message(only text and markdown type message can at)", Usage: "at all in a message(only text and markdown type message can at)",
EnvVar: "PLUGIN_MSG_AT_ALL", EnvVar: "PLUGIN_MSG_AT_ALL",
}, },
cli.StringFlag{ cli.StringFlag{
Name: "config.message.at.mobiles", Name: "config.message.at.mobiles,mobiles",
Usage: "at someone in a DingTalk group need this guy bind's mobile", Usage: "at someone in a DingTalk group need this guy bind's mobile",
EnvVar: "PLUGIN_MSG_AT_MOBILES", EnvVar: "PLUGIN_MSG_AT_MOBILES",
}, },
@@ -134,6 +134,16 @@ func main() {
Usage: "provider the owner of the repository", Usage: "provider the owner of the repository",
EnvVar: "DRONE_REPO_OWNER", EnvVar: "DRONE_REPO_OWNER",
}, },
cli.Uint64Flag{
Name: "stage.started",
Usage: "stage started ",
EnvVar: "DRONE_STAGE_STARTED",
},
cli.Uint64Flag{
Name: "stage.finished",
Usage: "stage finished",
EnvVar: "DRONE_STAGE_FINISHED",
},
cli.StringFlag{ cli.StringFlag{
Name: "build.status", Name: "build.status",
Usage: "build status", Usage: "build status",
@@ -150,12 +160,12 @@ func main() {
Usage: "build event", Usage: "build event",
EnvVar: "DRONE_BUILD_EVENT", EnvVar: "DRONE_BUILD_EVENT",
}, },
cli.StringFlag{ cli.Uint64Flag{
Name: "build.started", Name: "build.started",
Usage: "build started", Usage: "build started",
EnvVar: "DRONE_BUILD_STARTED", EnvVar: "DRONE_BUILD_STARTED",
}, },
cli.StringFlag{ cli.Uint64Flag{
Name: "build.finished", Name: "build.finished",
Usage: "build finished", Usage: "build finished",
EnvVar: "DRONE_BUILD_FINISHED", EnvVar: "DRONE_BUILD_FINISHED",
@@ -191,7 +201,7 @@ func main() {
EnvVar: "FAILURE_COLOR,PLUGIN_FAILURE_COLOR", EnvVar: "FAILURE_COLOR,PLUGIN_FAILURE_COLOR",
}, },
cli.StringFlag{ cli.StringFlag{
Name: "custom.tpl", Name: "custom.tpl,tpl",
Usage: "custom tpl", Usage: "custom tpl",
EnvVar: "PLUGIN_TPL,PLUGIN_CUSTOM_TPL", EnvVar: "PLUGIN_TPL,PLUGIN_CUSTOM_TPL",
}, },
@@ -210,6 +220,16 @@ func main() {
Usage: "tpl custom commit branch name", Usage: "tpl custom commit branch name",
EnvVar: "PLUGIN_TPL_COMMIT_BRANCH_NAME,TPL_COMMIT_BRANCH_NAME", EnvVar: "PLUGIN_TPL_COMMIT_BRANCH_NAME,TPL_COMMIT_BRANCH_NAME",
}, },
cli.StringFlag{
Name: "custom.started,started",
Usage: "started custom env name, eg., BUILD_STARTED",
EnvVar: "PLUGIN_CUSTOM_STARTED",
},
cli.StringFlag{
Name: "custom.finished,finished",
Usage: "finished custom env name, eg., BUILD_FINISHED",
EnvVar: "PLUGIN_CUSTOM_FINISHED",
},
} }
// kubernetes runner patch // kubernetes runner patch
@@ -239,8 +259,8 @@ func run(c *cli.Context) {
Status: c.String("build.status"), Status: c.String("build.status"),
Link: c.String("build.link"), Link: c.String("build.link"),
Event: c.String("build.event"), Event: c.String("build.event"),
StartAt: c.Int64("build.started"), StartAt: c.Uint64("build.started"),
FinishedAt: c.Int64("build.finished"), FinishedAt: c.Uint64("build.finished"),
}, },
Commit: Commit{ Commit: Commit{
Sha: c.String("commit.sha"), Sha: c.String("commit.sha"),
@@ -254,6 +274,10 @@ func run(c *cli.Context) {
Username: c.String("commit.author.username"), Username: c.String("commit.author.username"),
}, },
}, },
Stage: Stage{
StartedAt: c.Uint64("stage.started"),
FinishedAt: c.Uint64("stage.finished"),
},
}, },
// custom config // custom config
Config: Config{ Config: Config{
@@ -275,6 +299,10 @@ func run(c *cli.Context) {
FailureColor: c.String("custom.color.failure"), FailureColor: c.String("custom.color.failure"),
}, },
Tpl: c.String("custom.tpl"), Tpl: c.String("custom.tpl"),
Consuming: Consuming{
StartedEnv: c.String("custom.started"),
FinishedEnv: c.String("custom.finished"),
},
}, },
Tpl: Tpl{ Tpl: Tpl{
Repo: TplRepo{ Repo: TplRepo{
+40 -6
View File
@@ -9,6 +9,7 @@ import (
"net/url" "net/url"
"os" "os"
"regexp" "regexp"
"strconv"
"strings" "strings"
webhook "github.com/lddsb/dingtalk-webhook" webhook "github.com/lddsb/dingtalk-webhook"
@@ -29,8 +30,8 @@ type (
Status string // providers the current build status Status string // providers the current build status
Link string // providers the current build link Link string // providers the current build link
Event string // trigger event Event string // trigger event
StartAt int64 // build start at ( unix timestamp ) StartAt uint64 // build start at ( unix timestamp )
FinishedAt int64 // build finish at ( unix timestamp ) FinishedAt uint64 // build finish at ( unix timestamp )
} }
// Commit commit info // Commit commit info
@@ -43,6 +44,12 @@ type (
Author CommitAuthor Author CommitAuthor
} }
// Stage drone stage env
Stage struct {
StartedAt uint64
FinishedAt uint64
}
// CommitAuthor commit author info // CommitAuthor commit author info
CommitAuthor struct { CommitAuthor struct {
Avatar string // providers the author avatar for the current commit Avatar string // providers the author avatar for the current commit
@@ -56,6 +63,7 @@ type (
Repo Repo Repo Repo
Build Build Build Build
Commit Commit Commit Commit
Stage Stage
} }
// Config plugin private config // Config plugin private config
@@ -104,35 +112,48 @@ type (
Message MessageConfig Message MessageConfig
} }
// Custom user custom env
Custom struct { Custom struct {
Tpl string Tpl string
Color Color Color Color
Pic Pic Pic Pic
Consuming Consuming
} }
// Tpl TPL base
Tpl struct { Tpl struct {
Repo TplRepo Repo TplRepo
Commit TplCommit Commit TplCommit
Build TplBuild Build TplBuild
} }
// TplRepo TPL repo
TplRepo struct { TplRepo struct {
FullName string FullName string
ShortName string ShortName string
} }
// TplCommit TPL commit
TplCommit struct { TplCommit struct {
Branch string Branch string
} }
// TplBuild TPL build
TplBuild struct { TplBuild struct {
Status Status Status Status
} }
// Status status
Status struct { Status struct {
Success string Success string
Failure string Failure string
} }
// Consuming custom consuming env
Consuming struct {
StartedEnv string
FinishedEnv string
}
) )
// Exec execute WebHook // Exec execute WebHook
@@ -289,7 +310,20 @@ func (p *Plugin) getEnvs() map[string]interface{} {
envs["TPL_BUILD_STATUS"] = p.getStatus() envs["TPL_BUILD_STATUS"] = p.getStatus()
envs["TPL_BUILD_LINK"] = p.Drone.Build.Link envs["TPL_BUILD_LINK"] = p.Drone.Build.Link
envs["TPL_BUILD_EVENT"] = p.Drone.Build.Event envs["TPL_BUILD_EVENT"] = p.Drone.Build.Event
envs["TPL_BUILD_CONSUMING"] = fmt.Sprintf("%v", p.Drone.Build.FinishedAt-p.Drone.Build.StartAt)
var consuming uint64
// custom consuming env
if p.Custom.Consuming.FinishedEnv != "" && p.Custom.Consuming.StartedEnv != "" {
finishedAt, _ := strconv.ParseUint(os.Getenv(p.Custom.Consuming.FinishedEnv), 10, 64)
startedAt, _ := strconv.ParseUint(os.Getenv(p.Custom.Consuming.StartedEnv), 10, 64)
consuming = finishedAt - startedAt
} else {
consuming = p.Drone.Build.FinishedAt - p.Drone.Build.StartAt
if consuming == 0 {
consuming = p.Drone.Stage.FinishedAt - p.Drone.Stage.StartedAt
}
}
envs["TPL_BUILD_CONSUMING"] = fmt.Sprintf("%v", consuming)
envs["TPL_COMMIT_SHA"] = p.Drone.Commit.Sha envs["TPL_COMMIT_SHA"] = p.Drone.Commit.Sha
envs["TPL_COMMIT_REF"] = p.Drone.Commit.Ref envs["TPL_COMMIT_REF"] = p.Drone.Commit.Ref
+9
View File
@@ -0,0 +1,9 @@
### **[CI_PROJECT_TITLE]**'s **[CI_COMMIT_BRANCH]** build **[TPL_BUILD_STATUS]**
Message: [CI_COMMIT_MESSAGE]
Detail: [[CI_COMMIT_SHA]]([CI_PROJECT_URL]/commit/[CI_COMMIT_SHA])
Author: [[GITLAB_USER_NAME]([GITLAB_USER_EMAIL])](mailto:[GITLAB_USER_EMAIL])
[Click To The Build Detail Page [TPL_STATUS_EMOTICON]]([CI_PIPELINE_URL])
+4 -4
View File
@@ -1,9 +1,9 @@
### [TPL_REPO_SHORT_NAME] build [TPL_BUILD_STATUS] (`takes [TPL_BUILD_CONSUMING]s`) ### [TPL_REPO_SHORT_NAME] build [TPL_BUILD_STATUS] (`takes [TPL_BUILD_CONSUMING]s`)
[TPL_COMMIT_MSG] Message: [TPL_COMMIT_MSG]
[[TPL_COMMIT_SHA]]([TPL_COMMIT_LINK]) Detail: [[TPL_COMMIT_SHA]]([TPL_COMMIT_LINK])
[[TPL_AUTHOR_NAME]([TPL_AUTHOR_EMAIL])](mailto:[TPL_AUTHOR_EMAIL]) Author: [[TPL_AUTHOR_NAME]([TPL_AUTHOR_EMAIL])](mailto:[TPL_AUTHOR_EMAIL])
[Click To The Build Detail Page [TPL_STATUS_EMOTICON]]([TPL_BUILD_LINK]) [Click To The Build Detail Page [TPL_STATUS_EMOTICON]]([TPL_BUILD_LINK])
+11
View File
@@ -0,0 +1,11 @@
### [TPL_REPO_SHORT_NAME] build [TPL_BUILD_STATUS] (`takes [TPL_BUILD_CONSUMING]s`)
@mobile1 @mobile2
Message: [TPL_COMMIT_MSG]
Detail: [[TPL_COMMIT_SHA]]([TPL_COMMIT_LINK])
Author: [[TPL_AUTHOR_NAME]([TPL_AUTHOR_EMAIL])](mailto:[TPL_AUTHOR_EMAIL])
[Click To The Build Detail Page [TPL_STATUS_EMOTICON]]([TPL_BUILD_LINK])