This commit is contained in:
parent
a87686cb73
commit
f486b95d02
2 changed files with 205 additions and 39 deletions
239
main.go
239
main.go
|
|
@ -4,77 +4,104 @@ import (
|
|||
"bytes"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"text/template"
|
||||
|
||||
"github.com/sethvargo/go-githubactions"
|
||||
)
|
||||
|
||||
const (
|
||||
defaultColor = "483d8b/6495ed"
|
||||
successColor = "006400/228b22"
|
||||
failedColor = "8b0000/dc143c"
|
||||
)
|
||||
|
||||
type templateData struct {
|
||||
Title string
|
||||
SubTitle string
|
||||
Author string
|
||||
IconUrl string
|
||||
Project string
|
||||
Commit string
|
||||
Branch string
|
||||
Status string
|
||||
ActionID string
|
||||
GitURL string
|
||||
Color string
|
||||
Add string
|
||||
EventBody string
|
||||
}
|
||||
|
||||
func main() {
|
||||
data := templateData{}
|
||||
data.Add = ""
|
||||
|
||||
author := githubactions.GetInput("author")
|
||||
if author == "" {
|
||||
githubactions.Infof("Missing input 'author'")
|
||||
author = "STACKIT git action"
|
||||
}
|
||||
data.Author = author
|
||||
|
||||
title := githubactions.GetInput("title")
|
||||
if title == "" {
|
||||
githubactions.Infof("Missing input 'title'")
|
||||
title = "STACKIT git action"
|
||||
}
|
||||
data.Title = title
|
||||
|
||||
project := githubactions.GetInput("project")
|
||||
if project == "" {
|
||||
githubactions.Fatalf("Missing input 'project'")
|
||||
}
|
||||
data.Project = project
|
||||
|
||||
commit := githubactions.GetInput("commit")
|
||||
if commit == "" {
|
||||
githubactions.Fatalf("Missing input 'commit'")
|
||||
}
|
||||
data.Commit = commit
|
||||
|
||||
branch := githubactions.GetInput("branch")
|
||||
if branch == "" {
|
||||
githubactions.Fatalf("Missing input 'branch'")
|
||||
}
|
||||
data.Branch = branch
|
||||
|
||||
status := githubactions.GetInput("status")
|
||||
if status == "" {
|
||||
githubactions.Fatalf("Missing input 'status'")
|
||||
}
|
||||
data.Status = status
|
||||
|
||||
actionid := githubactions.GetInput("actionid")
|
||||
if actionid == "" {
|
||||
githubactions.Fatalf("Missing input 'actionid'")
|
||||
}
|
||||
data.ActionID = actionid
|
||||
|
||||
webhook := githubactions.GetInput("webhook")
|
||||
if webhook == "" {
|
||||
githubactions.Fatalf("Missing input 'webshook'")
|
||||
}
|
||||
joburl := githubactions.GetInput("joburl")
|
||||
|
||||
giturl := githubactions.GetInput("giturl")
|
||||
if webhook == "" {
|
||||
githubactions.Fatalf("Missing input 'joburl'")
|
||||
githubactions.Fatalf("Missing input 'giturl'")
|
||||
}
|
||||
data.GitURL = giturl
|
||||
|
||||
body := githubactions.GetInput("event_body")
|
||||
data.EventBody = body
|
||||
|
||||
fmt.Println("URL:> ", webhook)
|
||||
data := `{
|
||||
"cards": [
|
||||
{
|
||||
"header": {
|
||||
"title": "GitHub Action",
|
||||
"subtitle": "Build Job",
|
||||
"imageUrl": "https://github.githubassets.com/images/modules/logos_page/Octocat.png",
|
||||
"imageStyle": "IMAGE"
|
||||
},
|
||||
"sections": [
|
||||
{
|
||||
"widgets": [
|
||||
{
|
||||
"textParagraph": {
|
||||
"text": "<b>Project:</b> %s<br><b>Commit-id:</b> <font color=\"#FF0000\">%s</font><br><b>Branch:</b> <font color=\"#00FF00f\">%s</font><br><b>Build Status:</b> <font color=\"#0000ff\">%s</font>"
|
||||
},
|
||||
"buttons": [
|
||||
{
|
||||
"textButton": {
|
||||
"text": "Job Details",
|
||||
"onClick": {
|
||||
"openLink": {
|
||||
"url": "https://github.com/%s"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}`
|
||||
var jsonStr = []byte(fmt.Sprintf(data, project, commit, branch, status, actionid))
|
||||
|
||||
// var jsonStr = []byte(fmt.Sprintf(data, project, commit, branch, status, actionid))
|
||||
|
||||
jsonStr, err := card(data)
|
||||
if err != nil {
|
||||
githubactions.Fatalf(err.Error())
|
||||
}
|
||||
|
||||
req, err := http.NewRequest("POST", webhook, bytes.NewBuffer(jsonStr))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
|
|
@ -88,3 +115,139 @@ func main() {
|
|||
defer resp.Body.Close()
|
||||
fmt.Println("response Status:", resp.Status)
|
||||
}
|
||||
|
||||
func card(d templateData) ([]byte, error) {
|
||||
switch d.Status {
|
||||
case "success":
|
||||
d.Color = successColor
|
||||
case "failure":
|
||||
d.Color = failedColor
|
||||
default:
|
||||
d.Color = defaultColor
|
||||
}
|
||||
|
||||
if d.IconUrl == "" {
|
||||
d.IconUrl = "https://github.githubassets.com/images/modules/logos_page/Octocat.png"
|
||||
}
|
||||
|
||||
if d.EventBody == "" {
|
||||
d.EventBody = "<b>Project:</b> {{ .Project }}<br><b>Commit-id:</b> <font color=\"#FF0000\">{{ .Commit }}</font><br><b>Branch:</b> <font color=\"#00FF00f\">{{ .Branch }}</font><br><b>Build Status:</b> <font color=\"#0000ff\">{{ .Status }}</font>"
|
||||
}
|
||||
|
||||
// data := `{
|
||||
// "cards": [
|
||||
// {
|
||||
// "header": {
|
||||
// "title": "{{ .Title }}",
|
||||
// "subtitle": "{{ .SubTitle }}",
|
||||
// "imageUrl": "{{ .IconUrl }}",
|
||||
// "imageStyle": "IMAGE"
|
||||
// },
|
||||
// "sections": [
|
||||
// {
|
||||
// "widgets": [
|
||||
// {
|
||||
// "textParagraph": {
|
||||
// "text": "<b>Project:</b> {{ .Project }}<br><b>Commit-id:</b> <font color=\"#FF0000\">{{ .Commit }}</font><br><b>Branch:</b> <font color=\"#00FF00f\">{{ .Branch }}</font><br><b>Build Status:</b> <font color=\"#0000ff\">{{ .Status }}</font>"
|
||||
// },
|
||||
// "buttons": [
|
||||
// {
|
||||
// "textButton": {
|
||||
// "text": "Job Details",
|
||||
// "onClick": {
|
||||
// "openLink": {
|
||||
// "url": "{{ .GitURL }}/{{ .Project }}/actions/runs/{{ .ActionID }}"
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// ]
|
||||
// }
|
||||
// ]
|
||||
// }
|
||||
// ]
|
||||
// }
|
||||
// ]
|
||||
//}`
|
||||
|
||||
if d.Status == "success" {
|
||||
d.Add = "{\"decoratedText\": {\"startIcon\": {\"materialIcon\": {\"name\": \"check_circle\"}},\"text\": \"<b style='color: green;'>SUCCESS</b>\"}},"
|
||||
}
|
||||
|
||||
if d.Status == "failure" {
|
||||
d.Add = "{\"decoratedText\": {\"startIcon\": {\"materialIcon\": {\"name\": \"stop_circle\"}},\"text\": \"<b style='color: red;'>FAILURE</b>\"}},"
|
||||
}
|
||||
|
||||
tpl := `
|
||||
{
|
||||
"cardsV2": [
|
||||
{
|
||||
"cardId": "notify-${{ github.run_id }}",
|
||||
"card": {
|
||||
"header": {
|
||||
"title": "{{ .Title }}",
|
||||
"subtitle": "{{ .SubTitle }}",
|
||||
"imageUrl": "{{ .IconUrl }}",
|
||||
"imageStyle": "IMAGE"
|
||||
"imageType": "SQUARE"
|
||||
},
|
||||
"sections": [
|
||||
{
|
||||
"header": "{{ .Title }}",
|
||||
"collapsible": false,
|
||||
"widgets": [
|
||||
{{ .Add }}
|
||||
{
|
||||
"decoratedText": {
|
||||
"startIcon": {
|
||||
"knownIcon": "PERSON"
|
||||
},
|
||||
"text": "<b>{{ .Author }}</b>"
|
||||
}
|
||||
},
|
||||
{
|
||||
"textParagraph": {
|
||||
"text": "{{ .EventBody }}",
|
||||
"maxLines": 2
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"widgets": [
|
||||
{
|
||||
"buttonList": {
|
||||
"buttons": [
|
||||
{
|
||||
"text": "View Source Event",
|
||||
"type": "FILLED",
|
||||
"onClick": {
|
||||
"openLink": {
|
||||
"url": "{{ .GitURL }}/{{ .Project }}/actions/runs/{{ .ActionID }}"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
`
|
||||
tmpl, err := template.New("").Parse(tpl)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
buf := new(bytes.Buffer)
|
||||
err = tmpl.Execute(buf, d)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return buf.Bytes(), nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue