Skip to content

Commit 7f8faa6

Browse files
Merge pull request #149 from boostcampwm-2024/bug-shared-#148
CI 스크립트(자동 병합, 리뷰어 지정) 실행 시점 수정
2 parents 97b8385 + 322adb4 commit 7f8faa6

File tree

1 file changed

+33
-15
lines changed

1 file changed

+33
-15
lines changed

.github/workflows/auto-assign-merge.yml

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@ name: Auto Assign, Review, and Merge
33
on:
44
pull_request:
55
types:
6-
[
7-
opened,
8-
labeled,
9-
unlabeled,
10-
review_requested,
11-
review_request_removed,
12-
]
6+
- opened
7+
- labeled
8+
- unlabeled
9+
- review_requested
10+
- review_request_removed
1311
pull_request_review:
14-
types: [submitted]
12+
types:
13+
- submitted
1514

1615
jobs:
1716
auto-assign:
17+
if: github.event_name == 'pull_request'
1818
runs-on: ubuntu-latest
1919
steps:
2020
- name: Checkout repository
@@ -37,6 +37,7 @@ jobs:
3737
});
3838
3939
auto-reviewers:
40+
if: github.event_name == 'pull_request'
4041
runs-on: ubuntu-latest
4142
needs: auto-assign
4243
steps:
@@ -53,25 +54,31 @@ jobs:
5354
with:
5455
script: |
5556
const prNumber = context.payload.pull_request.number;
57+
const prAuthor = context.payload.pull_request.user.login;
5658
const assignees = context.payload.pull_request.assignees.map(a => a.login);
5759
5860
// Define reviewers for each label
59-
const BE_reviewers = ['summersummerwhy', 'ezcolin2', 'Tolerblanc'].filter(r => !assignees.includes(r));
60-
const FE_reviewers = ['yewonJin', 'djk01281'].filter(r => !assignees.includes(r));
61-
const doc_reviewers = ['summersummerwhy', 'ezcolin2', 'Tolerblanc', 'yewonJin', 'djk01281'].filter(r => !assignees.includes(r));
61+
const BE_reviewers = ['summersummerwhy', 'ezcolin2', 'Tolerblanc'];
62+
const FE_reviewers = ['yewonJin', 'djk01281'];
63+
const doc_reviewers = ['summersummerwhy', 'ezcolin2', 'Tolerblanc', 'yewonJin', 'djk01281'];
64+
65+
// Function to filter out assignees and PR author
66+
const filterReviewers = (reviewers) => {
67+
return reviewers.filter(r => !assignees.includes(r) && r !== prAuthor);
68+
};
6269
6370
// Check the labels on the PR and assign appropriate reviewers
6471
const labels = context.payload.pull_request.labels.map(label => label.name);
6572
let reviewersToAdd = [];
6673
6774
if (labels.includes('🐧🚀😶‍🌫️ BE')) {
68-
reviewersToAdd.push(...BE_reviewers);
75+
reviewersToAdd.push(...filterReviewers(BE_reviewers));
6976
}
7077
if (labels.includes('🐳🐣 FE')) {
71-
reviewersToAdd.push(...FE_reviewers);
78+
reviewersToAdd.push(...filterReviewers(FE_reviewers));
7279
}
7380
if (labels.includes('📚 Documentation')) {
74-
reviewersToAdd.push(...doc_reviewers);
81+
reviewersToAdd.push(...filterReviewers(doc_reviewers));
7582
}
7683
7784
// Remove duplicates if any
@@ -88,9 +95,9 @@ jobs:
8895
}
8996
9097
auto-merge:
98+
if: github.event_name == 'pull_request_review' && github.event.action == 'submitted' && github.event.review.state == 'approved'
9199
runs-on: ubuntu-latest
92100
needs: [auto-assign, auto-reviewers]
93-
if: github.event.pull_request.merged == false
94101
steps:
95102
- name: Checkout repository
96103
uses: actions/checkout@v2
@@ -106,6 +113,17 @@ jobs:
106113
script: |
107114
const prNumber = context.payload.pull_request.number;
108115
116+
// Check if PR is already merged
117+
const pr = await github.rest.pulls.get({
118+
owner: context.repo.owner,
119+
repo: context.repo.repo,
120+
pull_number: prNumber
121+
});
122+
123+
if (pr.data.merged) {
124+
return;
125+
}
126+
109127
// Check if PR is approved
110128
const reviews = await github.rest.pulls.listReviews({
111129
owner: context.repo.owner,

0 commit comments

Comments
 (0)