Skip to content

Commit ffc40ad

Browse files
Implement github workflow events (Dispatch, Job, Run)
Co-authored-by: Justin Toh <[email protected]>
1 parent 3c38273 commit ffc40ad

File tree

6 files changed

+1345
-0
lines changed

6 files changed

+1345
-0
lines changed

github/github.go

+15
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ const (
6868
TeamEvent Event = "team"
6969
TeamAddEvent Event = "team_add"
7070
WatchEvent Event = "watch"
71+
WorkflowDispatchEvent Event = "workflow_dispatch"
72+
WorkflowJobEvent Event = "workflow_job"
73+
WorkflowRunEvent Event = "workflow_run"
7174
)
7275

7376
// EventSubtype defines a GitHub Hook Event subtype
@@ -320,6 +323,18 @@ func (hook Webhook) Parse(r *http.Request, events ...Event) (interface{}, error)
320323
var pl WatchPayload
321324
err = json.Unmarshal([]byte(payload), &pl)
322325
return pl, err
326+
case WorkflowDispatchEvent:
327+
var pl WorkflowDispatchPayload
328+
err = json.Unmarshal([]byte(payload), &pl)
329+
return pl, err
330+
case WorkflowJobEvent:
331+
var pl WorkflowJobPayload
332+
err = json.Unmarshal([]byte(payload), &pl)
333+
return pl, err
334+
case WorkflowRunEvent:
335+
var pl WorkflowRunPayload
336+
err = json.Unmarshal([]byte(payload), &pl)
337+
return pl, err
323338
default:
324339
return nil, fmt.Errorf("unknown event %s", gitHubEvent)
325340
}

github/github_test.go

+30
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,36 @@ func TestWebhooks(t *testing.T) {
533533
"X-Hub-Signature": []string{"sha1=a317bcfe69ccb8bece74c20c7378e5413c4772f1"},
534534
},
535535
},
536+
{
537+
name: "WorkflowDispatchEvent",
538+
event: WorkflowDispatchEvent,
539+
typ: WorkflowDispatchPayload{},
540+
filename: "../testdata/github/workflow_dispatch.json",
541+
headers: http.Header{
542+
"X-Github-Event": []string{"workflow_dispatch"},
543+
"X-Hub-Signature": []string{"sha1=58db5b3c7e2391b34275d42256e0eda67e4997b9"},
544+
},
545+
},
546+
{
547+
name: "WorkflowJobEvent",
548+
event: WorkflowJobEvent,
549+
typ: WorkflowJobPayload{},
550+
filename: "../testdata/github/workflow_job.json",
551+
headers: http.Header{
552+
"X-Github-Event": []string{"workflow_job"},
553+
"X-Hub-Signature": []string{"sha1=2f22091ecf169313c9991f5f98ef3dffb069841b"},
554+
},
555+
},
556+
{
557+
name: "WorkflowRunEvent",
558+
event: WorkflowRunEvent,
559+
typ: WorkflowRunPayload{},
560+
filename: "../testdata/github/workflow_run.json",
561+
headers: http.Header{
562+
"X-Github-Event": []string{"workflow_run"},
563+
"X-Hub-Signature": []string{"sha1=c54d046b1ce440bc3434c8de5ad73e0a630d7cbe"},
564+
},
565+
},
536566
}
537567

538568
for _, tt := range tests {

0 commit comments

Comments
 (0)