Skip to content

Commit 5a0f4c9

Browse files
committed
add other webhook types
1 parent 5588588 commit 5a0f4c9

File tree

11 files changed

+94
-2
lines changed

11 files changed

+94
-2
lines changed

services/webhook/dingtalk.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,12 @@ func (dc dingtalkConvertor) Status(p *api.CommitStatusPayload) (DingtalkPayload,
176176
return createDingtalkPayload(text, text, "Status Changed", p.TargetURL), nil
177177
}
178178

179+
func (dingtalkConvertor) WorkflowRun(p *api.WorkflowRunPayload) (DingtalkPayload, error) {
180+
text, _ := getWorkflowRunPayloadInfo(p, noneLinkFormatter, true)
181+
182+
return createDingtalkPayload(text, text, "Workflow Run", p.WorkflowRun.HTMLURL), nil
183+
}
184+
179185
func (dingtalkConvertor) WorkflowJob(p *api.WorkflowJobPayload) (DingtalkPayload, error) {
180186
text, _ := getWorkflowJobPayloadInfo(p, noneLinkFormatter, true)
181187

services/webhook/discord.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,12 @@ func (d discordConvertor) Status(p *api.CommitStatusPayload) (DiscordPayload, er
271271
return d.createPayload(p.Sender, text, "", p.TargetURL, color), nil
272272
}
273273

274+
func (d discordConvertor) WorkflowRun(p *api.WorkflowRunPayload) (DiscordPayload, error) {
275+
text, color := getWorkflowRunPayloadInfo(p, noneLinkFormatter, false)
276+
277+
return d.createPayload(p.Sender, text, "", p.WorkflowRun.HTMLURL, color), nil
278+
}
279+
274280
func (d discordConvertor) WorkflowJob(p *api.WorkflowJobPayload) (DiscordPayload, error) {
275281
text, color := getWorkflowJobPayloadInfo(p, noneLinkFormatter, false)
276282

services/webhook/feishu.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,12 @@ func (fc feishuConvertor) Status(p *api.CommitStatusPayload) (FeishuPayload, err
172172
return newFeishuTextPayload(text), nil
173173
}
174174

175+
func (feishuConvertor) WorkflowRun(p *api.WorkflowRunPayload) (FeishuPayload, error) {
176+
text, _ := getWorkflowRunPayloadInfo(p, noneLinkFormatter, true)
177+
178+
return newFeishuTextPayload(text), nil
179+
}
180+
175181
func (feishuConvertor) WorkflowJob(p *api.WorkflowJobPayload) (FeishuPayload, error) {
176182
text, _ := getWorkflowJobPayloadInfo(p, noneLinkFormatter, true)
177183

services/webhook/general.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,37 @@ func getStatusPayloadInfo(p *api.CommitStatusPayload, linkFormatter linkFormatte
325325
return text, color
326326
}
327327

328+
func getWorkflowRunPayloadInfo(p *api.WorkflowRunPayload, linkFormatter linkFormatter, withSender bool) (text string, color int) {
329+
description := p.WorkflowRun.Conclusion
330+
if description == "" {
331+
description = p.WorkflowRun.Status
332+
}
333+
refLink := linkFormatter(p.WorkflowRun.HTMLURL, fmt.Sprintf("%s(#%d)", p.WorkflowRun.DisplayTitle, p.WorkflowRun.ID)+"["+base.ShortSha(p.WorkflowRun.HeadSha)+"]:"+description)
334+
335+
text = fmt.Sprintf("Workflow Run %s: %s", p.Action, refLink)
336+
switch description {
337+
case "waiting":
338+
color = orangeColor
339+
case "queued":
340+
color = orangeColorLight
341+
case "success":
342+
color = greenColor
343+
case "failure":
344+
color = redColor
345+
case "cancelled":
346+
color = yellowColor
347+
case "skipped":
348+
color = purpleColor
349+
default:
350+
color = greyColor
351+
}
352+
if withSender {
353+
text += fmt.Sprintf(" by %s", linkFormatter(setting.AppURL+url.PathEscape(p.Sender.UserName), p.Sender.UserName))
354+
}
355+
356+
return text, color
357+
}
358+
328359
func getWorkflowJobPayloadInfo(p *api.WorkflowJobPayload, linkFormatter linkFormatter, withSender bool) (text string, color int) {
329360
description := p.WorkflowJob.Conclusion
330361
if description == "" {

services/webhook/matrix.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,12 @@ func (m matrixConvertor) Status(p *api.CommitStatusPayload) (MatrixPayload, erro
252252
return m.newPayload(text)
253253
}
254254

255+
func (m matrixConvertor) WorkflowRun(p *api.WorkflowRunPayload) (MatrixPayload, error) {
256+
text, _ := getWorkflowRunPayloadInfo(p, htmlLinkFormatter, true)
257+
258+
return m.newPayload(text)
259+
}
260+
255261
func (m matrixConvertor) WorkflowJob(p *api.WorkflowJobPayload) (MatrixPayload, error) {
256262
text, _ := getWorkflowJobPayloadInfo(p, htmlLinkFormatter, true)
257263

services/webhook/msteams.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,20 @@ func (m msteamsConvertor) Status(p *api.CommitStatusPayload) (MSTeamsPayload, er
317317
), nil
318318
}
319319

320+
func (msteamsConvertor) WorkflowRun(p *api.WorkflowRunPayload) (MSTeamsPayload, error) {
321+
title, color := getWorkflowRunPayloadInfo(p, noneLinkFormatter, false)
322+
323+
return createMSTeamsPayload(
324+
p.Repo,
325+
p.Sender,
326+
title,
327+
"",
328+
p.WorkflowRun.HTMLURL,
329+
color,
330+
&MSTeamsFact{"WorkflowRun:", p.WorkflowRun.DisplayTitle},
331+
), nil
332+
}
333+
320334
func (msteamsConvertor) WorkflowJob(p *api.WorkflowJobPayload) (MSTeamsPayload, error) {
321335
title, color := getWorkflowJobPayloadInfo(p, noneLinkFormatter, false)
322336

services/webhook/packagist.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,10 @@ func (pc packagistConvertor) Status(_ *api.CommitStatusPayload) (PackagistPayloa
114114
return PackagistPayload{}, nil
115115
}
116116

117+
func (pc packagistConvertor) WorkflowRun(_ *api.WorkflowRunPayload) (PackagistPayload, error) {
118+
return PackagistPayload{}, nil
119+
}
120+
117121
func (pc packagistConvertor) WorkflowJob(_ *api.WorkflowJobPayload) (PackagistPayload, error) {
118122
return PackagistPayload{}, nil
119123
}

services/webhook/payloader.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ type payloadConvertor[T any] interface {
2929
Wiki(*api.WikiPayload) (T, error)
3030
Package(*api.PackagePayload) (T, error)
3131
Status(*api.CommitStatusPayload) (T, error)
32+
WorkflowRun(*api.WorkflowRunPayload) (T, error)
3233
WorkflowJob(*api.WorkflowJobPayload) (T, error)
3334
}
3435

@@ -81,8 +82,8 @@ func newPayload[T any](rc payloadConvertor[T], data []byte, event webhook_module
8182
return convertUnmarshalledJSON(rc.Package, data)
8283
case webhook_module.HookEventStatus:
8384
return convertUnmarshalledJSON(rc.Status, data)
84-
// case webhook_module.HookEventWorkflowRun:
85-
// return convertUnmarshalledJSON(rc.WorkflowRun, data)
85+
case webhook_module.HookEventWorkflowRun:
86+
return convertUnmarshalledJSON(rc.WorkflowRun, data)
8687
case webhook_module.HookEventWorkflowJob:
8788
return convertUnmarshalledJSON(rc.WorkflowJob, data)
8889
}

services/webhook/slack.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,12 @@ func (s slackConvertor) Status(p *api.CommitStatusPayload) (SlackPayload, error)
173173
return s.createPayload(text, nil), nil
174174
}
175175

176+
func (s slackConvertor) WorkflowRun(p *api.WorkflowRunPayload) (SlackPayload, error) {
177+
text, _ := getWorkflowRunPayloadInfo(p, SlackLinkFormatter, true)
178+
179+
return s.createPayload(text, nil), nil
180+
}
181+
176182
func (s slackConvertor) WorkflowJob(p *api.WorkflowJobPayload) (SlackPayload, error) {
177183
text, _ := getWorkflowJobPayloadInfo(p, SlackLinkFormatter, true)
178184

services/webhook/telegram.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,12 @@ func (t telegramConvertor) Status(p *api.CommitStatusPayload) (TelegramPayload,
180180
return createTelegramPayloadHTML(text), nil
181181
}
182182

183+
func (telegramConvertor) WorkflowRun(p *api.WorkflowRunPayload) (TelegramPayload, error) {
184+
text, _ := getWorkflowRunPayloadInfo(p, htmlLinkFormatter, true)
185+
186+
return createTelegramPayloadHTML(text), nil
187+
}
188+
183189
func (telegramConvertor) WorkflowJob(p *api.WorkflowJobPayload) (TelegramPayload, error) {
184190
text, _ := getWorkflowJobPayloadInfo(p, htmlLinkFormatter, true)
185191

0 commit comments

Comments
 (0)