Skip to content

Commit 7065a05

Browse files
Merge pull request #270 from rathodmeetsatish/master
[feat]: [CDS-75848]: Add new action type for github provider
2 parents e2d6b14 + 2d64e5c commit 7065a05

File tree

9 files changed

+865
-59
lines changed

9 files changed

+865
-59
lines changed

scm/const.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ const (
4040
// pull requests
4141
ActionSync
4242
ActionMerge
43+
ActionReviewReady
4344
// issue comment
4445
ActionEdit
4546
// release
@@ -80,6 +81,8 @@ func (a Action) String() (s string) {
8081
return "prereleased"
8182
case ActionRelease:
8283
return "released"
84+
case ActionReviewReady:
85+
return "review_ready"
8386
default:
8487
return
8588
}
@@ -127,6 +130,8 @@ func (a *Action) UnmarshalJSON(data []byte) error {
127130
*a = ActionPrerelease
128131
case "released":
129132
*a = ActionRelease
133+
case "review_ready":
134+
*a = ActionReviewReady
130135
}
131136
return nil
132137
}

scm/driver/github/testdata/webhooks/pr_ready_for_review.json

Lines changed: 528 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
{
2+
"Action": "review_ready",
3+
"Repo": {
4+
"ID": "498312568",
5+
"Namespace": "wings-software",
6+
"Name": "meet-git-sync-test",
7+
"Perm": null,
8+
"Branch": "main",
9+
"Private": true,
10+
"Visibility": 3,
11+
"Clone": "https://github.com/wings-software/meet-git-sync-test.git",
12+
"CloneSSH": "[email protected]:wings-software/meet-git-sync-test.git",
13+
"Link": "https://github.com/wings-software/meet-git-sync-test",
14+
"Created": "0001-01-01T00:00:00Z",
15+
"Updated": "0001-01-01T00:00:00Z"
16+
},
17+
"PullRequest": {
18+
"Number": 38,
19+
"Title": "Update dgdggd.me",
20+
"Body": null,
21+
"Sha": "212015fb011c49a2913c4a1a860ce07c0821c362",
22+
"Ref": "refs/pull/38/head",
23+
"Target": "main",
24+
"Source": "rathodmeetsatish-patch-25",
25+
"Fork": "wings-software/meet-git-sync-test",
26+
"Link": "https://github.com/wings-software/meet-git-sync-test/pull/38",
27+
"Diff": "https://github.com/wings-software/meet-git-sync-test/pull/38.diff",
28+
"Closed": null,
29+
"Merged": null,
30+
"Base": {
31+
"Sha": "8b8d2b3e6a2ee6df108c8429e86c9a750e728f9d",
32+
"Path": "refs/heads/main",
33+
"Name": "main"
34+
},
35+
"Head": {
36+
"Sha": "212015fb011c49a2913c4a1a860ce07c0821c362",
37+
"Path": "refs/heads/rathodmeetsatish-patch-25",
38+
"Name": "rathodmeetsatish-patch-25"
39+
},
40+
"Author": {
41+
"Login": "rathodmeetsatish",
42+
"Name": "",
43+
"Email": "",
44+
"Avatar": "https://avatars.githubusercontent.com/u/84321134?v=4"
45+
},
46+
"Created": "2023-08-28T19:15:53Z",
47+
"Updated": "2023-08-28T19:16:06Z"
48+
},
49+
"Sender": {
50+
"Login": "rathodmeetsatish",
51+
"Name": "",
52+
"Email": "",
53+
"Avatar": "https://avatars.githubusercontent.com/u/84321134?v=4"
54+
}
55+
}

scm/driver/github/webhook.go

Lines changed: 33 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,9 @@ func (s *webhookService) parsePullRequestHook(data []byte) (scm.Webhook, error)
172172
dst.Action = scm.ActionReopen
173173
case "synchronize":
174174
dst.Action = scm.ActionSync
175-
case "assigned", "unassigned", "review_requested", "review_request_removed", "ready_for_review", "locked", "unlocked":
175+
case "ready_for_review":
176+
dst.Action = scm.ActionReviewReady
177+
case "assigned", "unassigned", "review_requested", "review_request_removed", "locked", "unlocked":
176178
dst.Action = scm.ActionUnknown
177179
default:
178180
dst.Action = scm.ActionUnknown
@@ -186,7 +188,7 @@ func (s *webhookService) parseReleaseHook(data []byte) (scm.Webhook, error) {
186188
if err != nil {
187189
return nil, err
188190
}
189-
dst := convertReleaseHook(src)
191+
dst := convertReleaseHook(src)
190192
switch src.Action {
191193
case "created":
192194
dst.Action = scm.ActionCreate
@@ -332,24 +334,24 @@ type (
332334
} `json:"comment"`
333335
}
334336

335-
// github release webhook payload
337+
// github release webhook payload
336338
releaseHook struct {
337-
Action string `json:"action"`
338-
Release struct {
339-
ID int `json:"id"`
340-
Title string `json:"name"`
341-
Description string `json:"body"`
342-
Link string `json:"html_url,omitempty"`
343-
Tag string `json:"tag_name,omitempty"`
344-
Commitish string `json:"target_commitish,omitempty"`
345-
Draft bool `json:"draft"`
346-
Prerelease bool `json:"prerelease"`
347-
Created time.Time `json:"created_at"`
348-
Published time.Time `json:"published_at"`
349-
} `json:"release"`
350-
Repository repository `json:"repository"`
351-
Sender user `json:"sender"`
352-
}
339+
Action string `json:"action"`
340+
Release struct {
341+
ID int `json:"id"`
342+
Title string `json:"name"`
343+
Description string `json:"body"`
344+
Link string `json:"html_url,omitempty"`
345+
Tag string `json:"tag_name,omitempty"`
346+
Commitish string `json:"target_commitish,omitempty"`
347+
Draft bool `json:"draft"`
348+
Prerelease bool `json:"prerelease"`
349+
Created time.Time `json:"created_at"`
350+
Published time.Time `json:"published_at"`
351+
} `json:"release"`
352+
Repository repository `json:"repository"`
353+
Sender user `json:"sender"`
354+
}
353355
)
354356

355357
//
@@ -551,18 +553,18 @@ func convertIssueCommentHook(src *issueCommentHook) *scm.IssueCommentHook {
551553

552554
func convertReleaseHook(src *releaseHook) *scm.ReleaseHook {
553555
dst := &scm.ReleaseHook{
554-
Release: scm.Release{
555-
ID: src.Release.ID,
556-
Title: src.Release.Title,
557-
Description: src.Release.Description,
558-
Link: src.Release.Link,
559-
Tag: src.Release.Tag,
560-
Commitish: src.Release.Commitish,
561-
Draft: src.Release.Draft,
562-
Prerelease: src.Release.Prerelease,
563-
Created: src.Release.Created,
564-
Published: src.Release.Published,
565-
},
556+
Release: scm.Release{
557+
ID: src.Release.ID,
558+
Title: src.Release.Title,
559+
Description: src.Release.Description,
560+
Link: src.Release.Link,
561+
Tag: src.Release.Tag,
562+
Commitish: src.Release.Commitish,
563+
Draft: src.Release.Draft,
564+
Prerelease: src.Release.Prerelease,
565+
Created: src.Release.Created,
566+
Published: src.Release.Published,
567+
},
566568
Repo: scm.Repository{
567569
ID: fmt.Sprint(src.Repository.ID),
568570
Namespace: src.Repository.Owner.Login,

scm/driver/github/webhook_test.go

Lines changed: 34 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ func TestWebhooks(t *testing.T) {
2828
//
2929
// push events
3030
//
31-
3231
// push hooks
3332
{
3433
event: "push",
@@ -126,6 +125,13 @@ func TestWebhooks(t *testing.T) {
126125
after: "testdata/webhooks/pr_sync.json.golden",
127126
obj: new(scm.PullRequestHook),
128127
},
128+
// pull request ready for review
129+
{
130+
event: "pull_request",
131+
before: "testdata/webhooks/pr_ready_for_review.json",
132+
after: "testdata/webhooks/pr_ready_for_review.json.golden",
133+
obj: new(scm.PullRequestHook),
134+
},
129135
// pull request opened
130136
{
131137
event: "pull_request",
@@ -185,50 +191,50 @@ func TestWebhooks(t *testing.T) {
185191
after: "testdata/webhooks/deployment_commit.json.golden",
186192
obj: new(scm.DeployHook),
187193
},
188-
//
189-
// release
190-
//
194+
//
195+
// release
196+
//
191197
{
192198
event: "release",
193199
before: "testdata/webhooks/release_published.json",
194200
after: "testdata/webhooks/release_published.json.golden",
195201
obj: new(scm.ReleaseHook),
196202
},
197203
{
198-
event: "release",
199-
before: "testdata/webhooks/release_unpublished.json",
200-
after: "testdata/webhooks/release_unpublished.json.golden",
201-
obj: new(scm.ReleaseHook),
204+
event: "release",
205+
before: "testdata/webhooks/release_unpublished.json",
206+
after: "testdata/webhooks/release_unpublished.json.golden",
207+
obj: new(scm.ReleaseHook),
202208
},
203209
{
204-
event: "release",
205-
before: "testdata/webhooks/release_created.json",
206-
after: "testdata/webhooks/release_created.json.golden",
207-
obj: new(scm.ReleaseHook),
210+
event: "release",
211+
before: "testdata/webhooks/release_created.json",
212+
after: "testdata/webhooks/release_created.json.golden",
213+
obj: new(scm.ReleaseHook),
208214
},
209215
{
210-
event: "release",
211-
before: "testdata/webhooks/release_edited.json",
212-
after: "testdata/webhooks/release_edited.json.golden",
213-
obj: new(scm.ReleaseHook),
216+
event: "release",
217+
before: "testdata/webhooks/release_edited.json",
218+
after: "testdata/webhooks/release_edited.json.golden",
219+
obj: new(scm.ReleaseHook),
214220
},
215221
{
216-
event: "release",
217-
before: "testdata/webhooks/release_deleted.json",
218-
after: "testdata/webhooks/release_deleted.json.golden",
219-
obj: new(scm.ReleaseHook),
222+
event: "release",
223+
before: "testdata/webhooks/release_deleted.json",
224+
after: "testdata/webhooks/release_deleted.json.golden",
225+
obj: new(scm.ReleaseHook),
220226
},
221227
{
222-
event: "release",
223-
before: "testdata/webhooks/release_prereleased.json",
224-
after: "testdata/webhooks/release_prereleased.json.golden",
225-
obj: new(scm.ReleaseHook),
228+
event: "release",
229+
before: "testdata/webhooks/release_prereleased.json",
230+
after: "testdata/webhooks/release_prereleased.json.golden",
231+
obj: new(scm.ReleaseHook),
226232
},
227233
{
228-
event: "release",
229-
before: "testdata/webhooks/release_released.json",
230-
after: "testdata/webhooks/release_released.json.golden",
231-
obj: new(scm.ReleaseHook),
234+
event: "release",
235+
before: "testdata/webhooks/release_released.json",
236+
after: "testdata/webhooks/release_released.json.golden",
237+
obj: new(scm.ReleaseHook),
232238
},
233239
}
234240

0 commit comments

Comments
 (0)