Skip to content

Commit d91cc18

Browse files
authored
Merge pull request #20 from BCSDLab/feat/add-library
조사 라이브러리 추가
2 parents b98ca94 + 9d00ff5 commit d91cc18

File tree

6 files changed

+197
-1
lines changed

6 files changed

+197
-1
lines changed

.github/workflows/CHECK_PR_MERGED.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
on:
2+
pull_request:
3+
types: closed
4+
5+
jobs:
6+
check_pr_merged:
7+
if: github.event.pull_request.merged == true
8+
runs-on: ubuntu-latest
9+
steps:
10+
- name: Checkout code
11+
uses: actions/checkout@v2
12+
- name: Check PR Merged
13+
id: check_pr_merged
14+
uses: actions/github-script@v7
15+
with:
16+
github-token: ${{ secrets.GITHUB_TOKEN }}
17+
script: |
18+
const prUrl = context.payload.pull_request.html_url ?? context.payload.pull_request._links.html.href;
19+
core.setOutput('pullRequestLink', JSON.stringify(prUrl));
20+
21+
- name: Send Slack Trigger
22+
run: |
23+
curl -X POST https://api-slack.internal.bcsdlab.com/api/pr-merged/frontend \
24+
-H 'Content-Type: application/json' \
25+
-d '{
26+
"pullRequestLink": ${{ steps.check_pr_merged.outputs.pullRequestLink }}
27+
}'
28+
29+
- name: Get branch names
30+
id: get_branch_name
31+
run: |
32+
baseBranch=${{ github.event.pull_request.base.ref }}
33+
headBranch=${{ github.event.pull_request.head.ref }}
34+
echo "::set-output name=baseBranch::${baseBranch}"
35+
echo "::set-output name=headBranch::${headBranch}"
36+
37+
- name: Delete Branch
38+
if: ${{ steps.get_branch_name.outputs.headBranch != 'main' && steps.get_branch_name.outputs.headBranch != 'develop' }}
39+
run: |
40+
git checkout ${{ steps.get_branch_name.outputs.baseBranch }}
41+
git push origin --delete ${{ steps.get_branch_name.outputs.headBranch }}

.github/workflows/PICK_REVIEWER.yml

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
name: "Pick Reviewer"
2+
3+
on:
4+
pull_request:
5+
types: opened
6+
7+
jobs:
8+
pick-random-reviewer:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- name: Checkout code
12+
uses: actions/checkout@v2
13+
14+
- name: Pick random reviewer
15+
id: pick_random_reviewer
16+
uses: actions/github-script@v7
17+
with:
18+
github-token: ${{ secrets.GITHUB_TOKEN }}
19+
script: |
20+
const fs = require('fs');
21+
22+
const developers = JSON.parse(fs.readFileSync(`${{ github.workspace }}/.github/workflows/reviewer.json`));
23+
const prCreator = context.payload.pull_request.user.login;
24+
const prUrl = context.payload.pull_request.html_url;
25+
const prCreatorJson = developers.reviewers.find(person => person.githubName === prCreator);
26+
27+
//PrCreator가 reviewer에 등록되지 않은 사람인 경우
28+
if (!prCreatorJson) {
29+
const reviewerArr = developers.reviewers;
30+
const randomReviewer1 = getRandomReviewer(reviewerArr);
31+
const randomReviewer2 = getRandomReviewer(reviewerArr.filter(reviewer => reviewer.name !== randomReviewer1.name));
32+
setOutput(prCreator, prUrl, randomReviewer1, randomReviewer2);
33+
} else {
34+
const candidateInternalReviewers = developers.reviewers.filter(person => person.team === prCreatorJson.team && person.githubName !== prCreator);
35+
const candidateExternalReviewers = developers.reviewers.filter(person => person.team !== prCreatorJson.team);
36+
const randomReviewer1 = getRandomReviewer(candidateInternalReviewers);
37+
const randomReviewer2 = getRandomReviewer(candidateExternalReviewers);
38+
setOutput(prCreatorJson.name, prUrl, randomReviewer1, randomReviewer2);
39+
}
40+
41+
function getRandomReviewer(reviewers) {
42+
return reviewers[Math.floor(Math.random() * reviewers.length)];
43+
}
44+
45+
function setOutput(prCreator, prUrl, reviewer1, reviewer2) {
46+
core.setOutput('writer', JSON.stringify(prCreator));
47+
core.setOutput('pullRequestLink', JSON.stringify(prUrl));
48+
core.setOutput('reviewer1Name', JSON.stringify(reviewer1.name));
49+
core.setOutput('reviewer2Name', JSON.stringify(reviewer2.name));
50+
core.setOutput('reviewer1GithubName', reviewer1.githubName);
51+
core.setOutput('reviewer2GithubName', reviewer2.githubName);
52+
}
53+
54+
- name: test valiable
55+
uses: actions/github-script@v7
56+
with:
57+
github-token: ${{ secrets.GITHUB_TOKEN }}
58+
script: console.log(${{ steps.pick_random_reviewer.outputs.reviewer1Name }})
59+
60+
- name: Add Reviewers
61+
uses: madrapps/add-reviewers@v1
62+
with:
63+
reviewers: ${{ steps.pick_random_reviewer.outputs.reviewer1GithubName }},${{ steps.pick_random_reviewer.outputs.reviewer2GithubName }}
64+
token: ${{ secrets.GITHUB_TOKEN }}
65+
66+
67+
- name: Send Slack Trigger
68+
run: |
69+
curl -X POST https://api-slack.internal.bcsdlab.com/api/review-request/frontend \
70+
-H 'Content-Type: application/json' \
71+
-d '{
72+
"pullRequestLink": ${{ steps.pick_random_reviewer.outputs.pullRequestLink }},
73+
"writer": ${{ steps.pick_random_reviewer.outputs.writer }},
74+
"reviewers": [${{ steps.pick_random_reviewer.outputs.reviewer1Name }}, ${{ steps.pick_random_reviewer.outputs.reviewer2Name }}]
75+
}'

.github/workflows/reviewer.json

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
{
2+
"reviewers": [
3+
{
4+
"name": "채승윤",
5+
"githubName": "chaeseungyun",
6+
"team": "business"
7+
},
8+
{
9+
"name": "최정훈",
10+
"githubName": "hoooooony",
11+
"team": "business"
12+
},
13+
{
14+
"name": "김대의",
15+
"githubName": "kimeodml",
16+
"team": "business"
17+
},
18+
{
19+
"name": "김대관",
20+
"githubName": "daepan",
21+
"team": "business"
22+
},
23+
{
24+
"name": "김하나",
25+
"githubName": "hanagertrudeKim",
26+
"team": "user"
27+
},
28+
{
29+
"name": "김도훈",
30+
"githubName": "dooohun",
31+
"team": "user"
32+
},
33+
{
34+
"name": "곽승주",
35+
"githubName": "Gwak-Seungju",
36+
"team": "user"
37+
},
38+
{
39+
"name": "정민구",
40+
"githubName": "MinGu-Jeong",
41+
"team": "campus"
42+
},
43+
{
44+
"name": "정해성",
45+
"githubName": "junghaesung79",
46+
"team": "campus"
47+
},
48+
{
49+
"name": "김경윤",
50+
"githubName": "KimKyungYun",
51+
"team": "campus"
52+
}
53+
]
54+
}

package-lock.json

Lines changed: 23 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@
3636
"src"
3737
],
3838
"devDependencies": {
39+
"@types/josa": "^3.0.5",
3940
"esbuild": "^0.20.2",
41+
"josa": "^3.0.1",
4042
"typescript": "^5.4.4"
4143
}
4244
}

src/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
export * from './cn';
2-
export * from './sha256'
2+
export * from './sha256'
3+
export * from 'josa';

0 commit comments

Comments
 (0)