Compare commits

...

12 Commits

Author SHA1 Message Date
lddsb 5bcf803346 fix: docker image tags missing 2020-12-16 14:58:38 +08:00
lddsb 1b219624cd feat: GitHub Actions for build and push docker image 2020-12-16 14:14:51 +08:00
lddsb d409acce48 feat: use os.Getenv() read environment variables for tpl 2020-12-16 11:58:09 +08:00
dependabot-preview[bot] 2e94325c0e Bump github.com/urfave/cli from 1.22.4 to 1.22.5 (#27)
Bumps [github.com/urfave/cli](https://github.com/urfave/cli) from 1.22.4 to 1.22.5.
- [Release notes](https://github.com/urfave/cli/releases)
- [Changelog](https://github.com/urfave/cli/blob/master/docs/CHANGELOG.md)
- [Commits](https://github.com/urfave/cli/compare/v1.22.4...v1.22.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-11-28 13:36:40 +08:00
lddsb 1622a2beaa perf: update readme and changelog 2020-04-29 18:40:45 +08:00
dependabot-preview[bot] d2ab02e29c Bump github.com/urfave/cli from 1.22.3 to 1.22.4 (#23)
Bumps [github.com/urfave/cli](https://github.com/urfave/cli) from 1.22.3 to 1.22.4.
- [Release notes](https://github.com/urfave/cli/releases)
- [Changelog](https://github.com/urfave/cli/blob/master/docs/CHANGELOG.md)
- [Commits](https://github.com/urfave/cli/compare/v1.22.3...v1.22.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-29 11:09:42 +08:00
lddsb d0284b2434 Merge tag 'v1.2.4'
patch for k8s missing env
2020-04-29 11:08:21 +08:00
lddsb c8bc5d889d fix: patch for k8s missing env 2020-04-29 10:59:46 +08:00
Dee Luo d4dc439671 Create CHANGELOG.md 2020-03-10 22:43:40 +08:00
dependabot-preview[bot] 8d0434b308 Bump github.com/urfave/cli from 1.22.2 to 1.22.3 (#20)
Bumps [github.com/urfave/cli](https://github.com/urfave/cli) from 1.22.2 to 1.22.3.
- [Release notes](https://github.com/urfave/cli/releases)
- [Changelog](https://github.com/urfave/cli/blob/master/docs/CHANGELOG.md)
- [Commits](https://github.com/urfave/cli/compare/v1.22.2...v1.22.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-10 18:13:02 +08:00
Dee Luo 8aafd04b82 fix: default image cdn url (#17) 2020-01-20 11:51:20 +08:00
lddsb a651a73cbd fix: default image cdn url 2020-01-20 11:36:34 +08:00
9 changed files with 221 additions and 37 deletions
+55
View File
@@ -0,0 +1,55 @@
name: Publish to DockerHub and Github Package
on:
push:
tags:
- "v*"
jobs:
dockerhub:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Repo metadata
id: repo
uses: actions/github-script@v3
with:
script: |
const repo = await github.repos.get(context.repo)
return repo.data
- name: Prepare
id: prep
run: |
DOCKER_IMAGE=lddsb/drone-dingtalk-message
GITHUB_IMAGE=ghcr.io/lddsb/drone-dingtalk-message
VERSION=${GITHUB_REF#refs/tags/v}
TAGS="${DOCKER_IMAGE}:${VERSION}"
if [[ $VERSION =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
MINOR=${VERSION%.*}
MAJOR=${MINOR%.*}
TAGS="$TAGS,${DOCKER_IMAGE}:${MINOR},${DOCKER_IMAGE}:${MAJOR}"
TAGS="$TAGS,${GITHUB_IMAGE}:${VERSION},${GITHUB_IMAGE}:${MINOR},${GITHUB_IMAGE}:${MAJOR}"
fi
echo ::set-output name=tags::${TAGS}
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Register
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.CR_PAT }}
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile
push: true
tags: ${{ steps.prep.outputs.tags }}
+65
View File
@@ -0,0 +1,65 @@
# Changelog
## [Unreleased]
## [1.2.4] - 2020-04-28
### Fixed:
* kubernetes runner missing env, [details](https://docs.drone.io/runner/kubernetes/overview)
## [1.2.3] - 2020-01-20
### Fixed:
* CDN url of default image.
## [1.2.2] - 2019-12-07
### Added:
* Support DingTalk `sign secret`, please see the [README](README.md) for instructions.
## [1.2.1] - 2019-11-07
### Added:
* Support customize message tips title by `tips_title` option.
## [1.2.0] - 2019-09-24
### Added:
* Support custom tpl.
## [1.1.4] - 2020-04-28
### Fixed:
* kubernetes runner missing env, [details](https://docs.drone.io/runner/kubernetes/overview)
## [1.1.3] - 2020-01-20
### Fixed:
* CDN url of default image.
## [1.1.2] - 2019-11-07
### Added:
* Support customize message tips title by `tips_title` option.
## [1.1.1] - 2019-09-24
### Added:
* Support full token url as `token`.
## [1.1.0] - 2019-03-09
### Added:
* Package management tools migrate from dep to go mod, 1.0.x version stopped supporting new features.
## [1.0.2] - 2020-01-20
### Fixed:
* CDN url of default image.
## [1.0.1] - 2019-03-09
### Added:
* Auto publish image to DockerHub.
[Unreleased]: https://github.com/lddsb/drone-dingtalk-message/compare/v1.2.4...HEAD
[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.2]: https://github.com/lddsb/drone-dingtalk-message/compare/v1.2.1...v1.2.2
[1.2.1]: https://github.com/lddsb/drone-dingtalk-message/compare/v1.2.0...v1.2.1
[1.2.0]: https://github.com/lddsb/drone-dingtalk-message/compare/v1.1.0...v1.2.0
[1.1.4]: https://github.com/lddsb/drone-dingtalk-message/compare/v1.1.3...v1.1.4
[1.1.3]: https://github.com/lddsb/drone-dingtalk-message/compare/v1.1.2...v1.1.3
[1.1.2]: https://github.com/lddsb/drone-dingtalk-message/compare/v1.1.1...v1.1.2
[1.1.1]: https://github.com/lddsb/drone-dingtalk-message/compare/v1.1.0...v1.1.1
[1.1.0]: https://github.com/lddsb/drone-dingtalk-message/compare/v1.0.0...v1.1.0
[1.0.2]: https://github.com/lddsb/drone-dingtalk-message/compare/v1.0.1...v1.0.2
[1.0.1]: https://github.com/lddsb/drone-dingtalk-message/compare/v1.0.0...v1.0.1
+1 -1
View File
@@ -6,6 +6,6 @@ RUN GO111MODULE=on CGO_ENABLED=0 GOOS=linux go build -a -o drone-dingtalk .
FROM alpine:latest
RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk/*
COPY --from=builder /app/drone-dingtalk /bin
COPY --from=builder /app/tpls /app/tpls
COPY --from=builder /app/tpls /app/drone/dingtalk/message/tpls
ENTRYPOINT ["/bin/drone-dingtalk"]
+25 -4
View File
@@ -3,7 +3,18 @@
[中文说明](README_ZH.md)
just support `text`, `markdown` and `link` type now
<!-- toc -->
- [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)
<!-- tocstop -->
### Drone CI Plugin Config
`0.8.x`
```yaml
@@ -15,7 +26,7 @@ pipeline:
type: markdown
```
`1.0.x`
`1.x`
```yaml
kind: pipeline
name: default
@@ -46,7 +57,7 @@ String. Secret for generate sign.
`tpl`
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.
`tips_title`
@@ -91,7 +102,7 @@ String. You can customize the [TPL_BUILD_STATUS] (when status=`failure`) by this
### TPL
> `tpl` won't work with message type `link` !!!
That's a good news, we support `tpl` now.This is a 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_COMMIT_MSG]
@@ -172,4 +183,14 @@ $ ./drone-dingtalk-message -h
```
### Todo
It's sad, just support `text`, `markdown` and `link` type now.
- implement all message type
### 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)
+45 -26
View File
@@ -1,9 +1,20 @@
# 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)
目前仅支持 `text`, `markdown` 以及 `link` 类型的消息,建议使用`markdown`类型。
<!-- 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`中,下面是简单的例子:
添加一个`step`到你的`.drone.yml`中,下面是例子:
`0.8.x`
```yaml
@@ -15,7 +26,7 @@ pipeline:
type: markdown
```
`1.0.x`
`1.x`
```yaml
kind: pipeline
name: default
@@ -102,31 +113,31 @@ steps:
[Click To The Build Detail Page [TPL_STATUS_EMOTICON)]]([TPL_BUILD_LINK])
你可以写自己喜欢的模版,终于不用再对默认模版发愁啦!并且模版的语法非常简单!比较可惜的是目前支持的变量还比较少,下面是当前支持的变量的列表:
你可以写自己喜欢的模版,终于不用再对默认模版发愁啦!并且模版的语法非常简单!比较可惜的是目前支持的变量还比较少,下面是当前支持的变量的列表:
| 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 |
| [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] | 根据编译状态显示不同的表情,比如 `:)` `:(` |
@@ -172,5 +183,13 @@ $ cd /path/to/you/want && GO111MODULE=on go build .
$ ./drone-dingtalk-message -h
```
### 待办
### 未来计划
目前仅支持 `text`, `markdown` 以及 `link` 类型的消息,建议使用`markdown`类型。
- 实现更多的消息类型
### 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`
+1 -1
View File
@@ -5,5 +5,5 @@ go 1.12
require (
github.com/joho/godotenv v1.3.0
github.com/lddsb/dingtalk-webhook v0.0.4
github.com/urfave/cli v1.22.2
github.com/urfave/cli v1.22.5
)
+6
View File
@@ -13,5 +13,11 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5I
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/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+9 -2
View File
@@ -4,8 +4,9 @@ import (
"fmt"
"log"
"os"
"time"
_ "github.com/joho/godotenv/autoload"
"github.com/joho/godotenv"
"github.com/urfave/cli"
)
@@ -16,7 +17,8 @@ func main() {
app := cli.NewApp()
app.Name = "Drone DingTalk Message Plugin"
app.Usage = "Sending message to DingTalk group by robot using WebHook"
app.Copyright = "© 2018 Dee Luo"
year := time.Now().Year()
app.Copyright = fmt.Sprintf("© 2018-%d Dee Luo", year)
app.Authors = []cli.Author{
{
Name: "Dee Luo",
@@ -210,6 +212,11 @@ func main() {
},
}
// kubernetes runner patch
if _, err := os.Stat("/run/drone/env"); err == nil {
godotenv.Overload("/run/drone/env")
}
if err := app.Run(os.Args); nil != err {
log.Println(err)
}
+14 -3
View File
@@ -137,6 +137,12 @@ type (
// Exec execute WebHook
func (p *Plugin) Exec() error {
if p.Config.Debug {
for _, e := range os.Environ() {
log.Println(e)
}
}
var err error
if "" == p.Config.AccessToken {
msg := "missing DingTalk access token"
@@ -194,7 +200,7 @@ func fileExists(filePath string) bool {
// getTpl get tpl from local file or remote file
func (p *Plugin) getTpl() (tpl string, err error) {
//var tpl string
tplDir := "/app/tpls"
tplDir := "/app/drone/dingtalk/message/tpls"
if "" == p.Custom.Tpl {
p.Custom.Tpl = fmt.Sprintf("%s/%s.tpl", tplDir, strings.ToLower(p.Config.MsgType))
}
@@ -249,6 +255,11 @@ func (p *Plugin) fillTpl(tpl string) string {
reg := regexp.MustCompile(`\[([^\[\]]*)]`)
match := reg.FindAllStringSubmatch(tpl, -1)
for _, m := range match {
// from environment
if envStr := os.Getenv(m[1]); envStr != "" {
tpl = strings.ReplaceAll(tpl, m[0], envStr)
}
// check if the keyword is legal
if _, ok := envs[m[1]]; ok {
// replace keyword
@@ -345,12 +356,12 @@ func (p *Plugin) getEmoticon() string {
func (p *Plugin) getPicURL() string {
pics := make(map[string]string)
// success picture url
pics["success"] = "https://ws4.sinaimg.cn/large/006tNc79gy1fz05g5a7utj30he0bfjry.jpg"
pics["success"] = "https://wx1.sinaimg.cn/large/006tNc79gy1fz05g5a7utj30he0bfjry.jpg"
if p.Custom.Pic.SuccessPicURL != "" {
pics["success"] = p.Custom.Pic.SuccessPicURL
}
// failure picture url
pics["failure"] = "https://ws1.sinaimg.cn/large/006tNc79gy1fz0b4fghpnj30hd0bdmxn.jpg"
pics["failure"] = "https://wx1.sinaimg.cn/large/006tNc79gy1fz0b4fghpnj30hd0bdmxn.jpg"
if p.Custom.Pic.FailurePicURL != "" {
pics["failure"] = p.Custom.Pic.FailurePicURL
}