Skip to content

Commit 2ac790b

Browse files
authored
Merge branch 'develop' into feature-be-#110
2 parents 342a151 + 4d3938b commit 2ac790b

24 files changed

+1114
-88
lines changed
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
name: Auto Assign, Review, and Merge
2+
3+
on:
4+
pull_request:
5+
types:
6+
[
7+
opened,
8+
labeled,
9+
unlabeled,
10+
review_requested,
11+
review_request_removed,
12+
]
13+
pull_request_review:
14+
types: [submitted]
15+
16+
jobs:
17+
auto-assign:
18+
runs-on: ubuntu-latest
19+
steps:
20+
- name: Checkout repository
21+
uses: actions/checkout@v2
22+
23+
- name: Set up Node.js
24+
uses: actions/setup-node@v2
25+
with:
26+
node-version: "16"
27+
28+
- name: Assign PR creator as Assignee
29+
uses: actions/github-script@v6
30+
with:
31+
script: |
32+
await github.rest.issues.addAssignees({
33+
owner: context.repo.owner,
34+
repo: context.repo.repo,
35+
issue_number: context.payload.pull_request.number,
36+
assignees: [context.actor]
37+
});
38+
39+
auto-reviewers:
40+
runs-on: ubuntu-latest
41+
needs: auto-assign
42+
steps:
43+
- name: Checkout repository
44+
uses: actions/checkout@v2
45+
46+
- name: Set up Node.js
47+
uses: actions/setup-node@v2
48+
with:
49+
node-version: "16"
50+
51+
- name: Add reviewers based on labels
52+
uses: actions/github-script@v6
53+
with:
54+
script: |
55+
const prNumber = context.payload.pull_request.number;
56+
const assignees = context.payload.pull_request.assignees.map(a => a.login);
57+
58+
// 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));
62+
63+
// Check the labels on the PR and assign appropriate reviewers
64+
const labels = context.payload.pull_request.labels.map(label => label.name);
65+
let reviewersToAdd = [];
66+
67+
if (labels.includes('🐧🚀😶‍🌫️ BE')) {
68+
reviewersToAdd.push(...BE_reviewers);
69+
}
70+
if (labels.includes('🐳🐣 FE')) {
71+
reviewersToAdd.push(...FE_reviewers);
72+
}
73+
if (labels.includes('📚 Documentation')) {
74+
reviewersToAdd.push(...doc_reviewers);
75+
}
76+
77+
// Remove duplicates if any
78+
reviewersToAdd = [...new Set(reviewersToAdd)];
79+
80+
// Request reviewers
81+
if (reviewersToAdd.length > 0) {
82+
await github.rest.pulls.requestReviewers({
83+
owner: context.repo.owner,
84+
repo: context.repo.repo,
85+
pull_number: prNumber,
86+
reviewers: reviewersToAdd
87+
});
88+
}
89+
90+
auto-merge:
91+
runs-on: ubuntu-latest
92+
needs: [auto-assign, auto-reviewers]
93+
if: github.event.pull_request.merged == false
94+
steps:
95+
- name: Checkout repository
96+
uses: actions/checkout@v2
97+
98+
- name: Set up Node.js
99+
uses: actions/setup-node@v2
100+
with:
101+
node-version: "16"
102+
103+
- name: Merge and Close PR if Approved
104+
uses: actions/github-script@v6
105+
with:
106+
script: |
107+
const prNumber = context.payload.pull_request.number;
108+
109+
// Check if PR is approved
110+
const reviews = await github.rest.pulls.listReviews({
111+
owner: context.repo.owner,
112+
repo: context.repo.repo,
113+
pull_number: prNumber
114+
});
115+
116+
const approved = reviews.data.some(review => review.state === 'APPROVED');
117+
118+
// If approved, merge the PR
119+
if (approved) {
120+
await github.rest.pulls.merge({
121+
owner: context.repo.owner,
122+
repo: context.repo.repo,
123+
pull_number: prNumber
124+
});
125+
126+
// Delete the branch after merge
127+
const branchName = context.payload.pull_request.head.ref;
128+
await github.rest.git.deleteRef({
129+
owner: context.repo.owner,
130+
repo: context.repo.repo,
131+
ref: `heads/${branchName}`
132+
});
133+
}

.github/workflows/ci-pipeline.yml

Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
name: OctoDocs CI Pipeline
2+
3+
on:
4+
pull_request:
5+
branches:
6+
- develop
7+
push:
8+
branches:
9+
- develop
10+
11+
jobs:
12+
setup-backend:
13+
runs-on: ubuntu-latest
14+
outputs:
15+
cache-key: ${{ steps.cache-backend-deps.outputs.cache-hit }}
16+
steps:
17+
- name: Checkout repository
18+
uses: actions/checkout@v3
19+
20+
- name: Set up Node.js
21+
uses: actions/setup-node@v3
22+
with:
23+
node-version: "23"
24+
25+
# 백엔드 의존성 캐시 설정
26+
- name: Cache Yarn dependencies for backend
27+
id: cache-backend-deps
28+
uses: actions/cache@v3
29+
with:
30+
path: backend/node_modules
31+
key: ${{ runner.os }}-backend-yarn-${{ hashFiles('backend/yarn.lock') }}
32+
33+
# 백엔드 의존성 설치
34+
- name: Install backend dependencies
35+
if: steps.cache-backend-deps.outputs.cache-hit != 'true'
36+
working-directory: ./backend
37+
run: yarn install
38+
39+
setup-frontend:
40+
runs-on: ubuntu-latest
41+
outputs:
42+
cache-key: ${{ steps.cache-frontend-deps.outputs.cache-hit }}
43+
steps:
44+
- name: Checkout repository
45+
uses: actions/checkout@v3
46+
47+
- name: Set up Node.js
48+
uses: actions/setup-node@v3
49+
with:
50+
node-version: "23"
51+
52+
# 프론트엔드 의존성 캐시 설정
53+
- name: Cache Yarn dependencies for frontend
54+
id: cache-frontend-deps
55+
uses: actions/cache@v3
56+
with:
57+
path: frontend/node_modules
58+
key: ${{ runner.os }}-frontend-yarn-${{ hashFiles('frontend/yarn.lock') }}
59+
60+
# 프론트엔드 의존성 설치
61+
- name: Install frontend dependencies
62+
if: steps.cache-frontend-deps.outputs.cache-hit != 'true'
63+
working-directory: ./frontend
64+
run: yarn install
65+
66+
backend-lint:
67+
runs-on: ubuntu-latest
68+
needs: setup-backend
69+
steps:
70+
- name: Checkout repository
71+
uses: actions/checkout@v3
72+
73+
- name: Set up Node.js
74+
uses: actions/setup-node@v3
75+
with:
76+
node-version: "23"
77+
78+
# 백엔드 의존성 캐시 복원
79+
- name: Restore Yarn dependencies for backend
80+
uses: actions/cache@v3
81+
with:
82+
path: backend/node_modules
83+
key: ${{ runner.os }}-backend-yarn-${{ hashFiles('backend/yarn.lock') }}
84+
85+
# 백엔드 린트 실행
86+
- name: Run backend lint
87+
working-directory: ./backend
88+
run: yarn lint
89+
continue-on-error: true
90+
91+
# 백엔드 린트 경고 포스트
92+
- name: Post backend lint warning if any
93+
if: failure()
94+
run: echo "⚠️ 백엔드 lint 실행 도중 경고가 발생했습니다. 확인해주세요."
95+
96+
frontend-lint:
97+
runs-on: ubuntu-latest
98+
needs: setup-frontend
99+
steps:
100+
- name: Checkout repository
101+
uses: actions/checkout@v3
102+
103+
- name: Set up Node.js
104+
uses: actions/setup-node@v3
105+
with:
106+
node-version: "23"
107+
108+
# 프론트엔드 의존성 캐시 복원
109+
- name: Restore Yarn dependencies for frontend
110+
uses: actions/cache@v3
111+
with:
112+
path: frontend/node_modules
113+
key: ${{ runner.os }}-frontend-yarn-${{ hashFiles('frontend/yarn.lock') }}
114+
115+
# 프론트엔드 린트 실행
116+
- name: Run frontend lint
117+
working-directory: ./frontend
118+
run: yarn lint
119+
continue-on-error: true
120+
121+
# 프론트엔드 린트 경고 포스트
122+
- name: Post frontend lint warning if any
123+
if: failure()
124+
run: echo "⚠️ 프론트엔드 lint 실행 도중 경고가 발생했습니다. 확인해주세요."
125+
126+
backend-build:
127+
runs-on: ubuntu-latest
128+
needs: setup-backend
129+
steps:
130+
- name: Checkout repository
131+
uses: actions/checkout@v3
132+
133+
- name: Set up Node.js
134+
uses: actions/setup-node@v3
135+
with:
136+
node-version: "23"
137+
138+
# 백엔드 의존성 캐시 복원
139+
- name: Restore Yarn dependencies for backend
140+
uses: actions/cache@v3
141+
with:
142+
path: backend/node_modules
143+
key: ${{ runner.os }}-backend-yarn-${{ hashFiles('backend/yarn.lock') }}
144+
145+
# 백엔드 빌드 실행
146+
- name: Run backend build
147+
working-directory: ./backend
148+
run: yarn build
149+
150+
frontend-build:
151+
runs-on: ubuntu-latest
152+
needs: setup-frontend
153+
steps:
154+
- name: Checkout repository
155+
uses: actions/checkout@v3
156+
157+
- name: Set up Node.js
158+
uses: actions/setup-node@v3
159+
with:
160+
node-version: "23"
161+
162+
# 프론트엔드 의존성 캐시 복원
163+
- name: Restore Yarn dependencies for frontend
164+
uses: actions/cache@v3
165+
with:
166+
path: frontend/node_modules
167+
key: ${{ runner.os }}-frontend-yarn-${{ hashFiles('frontend/yarn.lock') }}
168+
169+
# 프론트엔드 빌드 실행
170+
- name: Run frontend build
171+
working-directory: ./frontend
172+
run: yarn build
173+
174+
backend-test:
175+
runs-on: ubuntu-latest
176+
needs: [setup-backend, backend-build]
177+
steps:
178+
- name: Checkout repository
179+
uses: actions/checkout@v3
180+
181+
- name: Set up Node.js
182+
uses: actions/setup-node@v3
183+
with:
184+
node-version: "23"
185+
186+
# 백엔드 의존성 캐시 복원
187+
- name: Restore Yarn dependencies for backend
188+
uses: actions/cache@v3
189+
with:
190+
path: backend/node_modules
191+
key: ${{ runner.os }}-backend-yarn-${{ hashFiles('backend/yarn.lock') }}
192+
193+
# 백엔드 테스트 실행
194+
- name: Run backend tests
195+
working-directory: ./backend
196+
run: yarn test

backend/.gitignore renamed to .gitignore

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
# env
22
.env
33
.env*
4+
*.local
45

56
# compiled output
6-
/dist
7-
/node_modules
7+
*/dist
8+
*/node_modules
9+
dist
10+
node_modules
11+
dist-ssr
812

913
# Logs
1014
logs
@@ -24,12 +28,18 @@ lerna-debug.log*
2428

2529
# IDEs and editors
2630
/.idea
31+
.idea
2732
.project
2833
.classpath
2934
.c9/
3035
*.launch
3136
.settings/
3237
*.sublime-workspace
38+
*.suo
39+
*.ntvs*
40+
*.njsproj
41+
*.sln
42+
*.sw?
3343

3444
# IDE - VSCode
3545
.vscode/*

.vscode/settings.json

Lines changed: 0 additions & 6 deletions
This file was deleted.

0 commit comments

Comments
 (0)