Compare commits

...

8 Commits

Author SHA1 Message Date
lddsb a9e3dbbf4b use help option 2019-02-07 10:42:01 +08:00
lddsb c82a6a8c79 add workspace 2019-02-07 10:39:53 +08:00
lddsb aec957818e migrate golang image to latest 2019-02-07 10:36:35 +08:00
lddsb 6c497aa777 add dep install step 2019-02-07 10:35:15 +08:00
lddsb 9e4a2ae0dc add dep ensure step 2019-02-07 10:32:49 +08:00
lddsb 00b6d66762 fix drone.yml syntax error 2019-02-07 10:31:05 +08:00
lddsb 26933681c4 add drone auto build 2019-02-07 10:30:11 +08:00
lddsb b6dd3953d2 increase retry mechanism 2019-02-06 22:26:52 +08:00
3 changed files with 79 additions and 39 deletions
+34
View File
@@ -0,0 +1,34 @@
---
kind: pipeline
name: default
workspace:
base: /go
path: src/github.com/lddsb/drone-dingtalk-message
steps:
- name: build
image: golang
commands:
- go get -u github.com/golang/dep/cmd/dep
- dep ensure
- CGO_ENABLED=0 GOOS=linux go build -a -o drone-dingtalk-message .
- ./drone-dingtalk-message -h
- name: publish
image: plugins/docker
when:
branch:
- beta
status:
- success
event:
- push
settings:
repo: lddsb/drone-dingtalk-message
dockerfile: Dockerfile
tags: beta
username:
from_secret: docker_username
password:
from_secret: docker_password
+7
View File
@@ -330,6 +330,12 @@ func main() {
Usage: "link sha source page or not",
EnvVar: "PLUGIN_SHA_LINK,PLUGIN_MESSAGE_SHA_LINK",
},
cli.IntFlag{
Name: "config.retry.time",
Usage: "time out retry times, default 3",
Value: 3,
EnvVar: "PLUGIN_RETRY_TIME,PLUGIN_RETRY",
},
}
if err := app.Run(os.Args); nil != err {
@@ -386,6 +392,7 @@ func run(c *cli.Context) {
WithColor: c.Bool("config.message.color"),
WithPic: c.Bool("config.message.pic"),
LinkSha: c.Bool("config.message.sha.link"),
RetryTime: c.Int("config.retry.time"),
},
CI: CI{
RepoLink: c.String("ci.repo.link"),
+38 -39
View File
@@ -4,6 +4,7 @@ import (
"errors"
"fmt"
"log"
"net"
"strings"
)
@@ -92,6 +93,7 @@ type (
WithColor bool
WithPic bool
LinkSha bool
RetryTime int
}
// plugin all config
Plugin struct {
@@ -120,47 +122,44 @@ func (p *Plugin) Exec() error {
linkUrls := strings.Split(p.Config.LinkUrls, ",")
linkTitles := strings.Split(p.Config.LinkTitles, ",")
log.Println("sending message type: " + p.Config.MsgType)
switch strings.ToLower(p.Config.MsgType) {
case "markdown":
err := p.WebHook.SendMarkdownMsg(
"You have a new message...",
p.baseTpl(),
p.Config.IsAtALL,
mobiles...
)
if nil != err {
log.Println(err)
return err
var err error
retryTime := 1
for retryTime <= p.Config.RetryTime {
log.Printf("start a %d try", retryTime)
switch strings.ToLower(p.Config.MsgType) {
case "markdown":
err = p.WebHook.SendMarkdownMsg(
"You have a new message...",
p.baseTpl(),
p.Config.IsAtALL,
mobiles...
)
case "text":
err = p.WebHook.SendTextMsg(p.baseTpl(), p.Config.IsAtALL, mobiles...)
case "actioncard":
err = p.WebHook.SendActionCardMsg(
"A actionCard title",
p.baseTpl(),
linkUrls,
linkTitles,
p.Config.HideAvatar,
p.Config.BtnOrientation,
)
case "link":
err = p.WebHook.SendLinkMsg(p.Build.Status, p.baseTpl(), p.Commit.Authors.Avatar, p.Build.Link)
default:
err = errors.New("not support message type")
}
case "text":
err := p.WebHook.SendTextMsg(p.baseTpl(), p.Config.IsAtALL, mobiles...)
if nil != err {
log.Println(err)
return err
if netErr, ok := err.(net.Error); ok && netErr.Timeout() {
retryTime++
} else {
break
}
case "actioncard":
err := p.WebHook.SendActionCardMsg(
"A actionCard title",
p.baseTpl(),
linkUrls,
linkTitles,
p.Config.HideAvatar,
p.Config.BtnOrientation,
)
if nil != err {
log.Println(err)
return err
}
case "link":
err := p.WebHook.SendLinkMsg(p.Build.Status, p.baseTpl(), p.Commit.Authors.Avatar, p.Build.Link)
if nil != err {
log.Println(err)
return err
}
default:
msg := "not support message type"
log.Println(msg)
return errors.New(msg)
}
if nil != err {
log.Println(err)
return err
}
log.Println("send " + p.Config.MsgType + " message success!")
return nil