Skip to content

Commit 5e029c4

Browse files
committed
ci: add job for project validation
1 parent c65df35 commit 5e029c4

File tree

1 file changed

+110
-2
lines changed

1 file changed

+110
-2
lines changed

โ€Ž.github/workflows/integration.yamlโ€Ž

Lines changed: 110 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ jobs:
1717
run: |
1818
echo "๐Ÿ” PR ๋ฒˆํ˜ธ: ${{ github.event.pull_request.number }}"
1919
pr_number="${{ github.event.pull_request.number }}"
20-
20+
2121
echo "๐Ÿ“‹ PR ๋ผ๋ฒจ ์กฐํšŒ ์ค‘..."
2222
labels_json=$(gh pr view $pr_number --json labels -q '.labels[].name')
2323
echo "ํ™•์ธ๋œ ๋ผ๋ฒจ: $labels_json"
24-
24+
2525
if [ -n "$labels_json" ]; then
2626
has_maintenance=$(echo $labels_json | grep -q 'maintenance' && echo 'true' || echo 'false')
2727
echo "maintenance ๋ผ๋ฒจ ํฌํ•จ ์—ฌ๋ถ€: $has_maintenance"
@@ -153,3 +153,111 @@ jobs:
153153
fi
154154
env:
155155
GH_TOKEN: ${{ github.token }}
156+
157+
check-project:
158+
runs-on: ubuntu-latest
159+
permissions:
160+
contents: read
161+
pull-requests: read
162+
163+
steps:
164+
# PR ๋ผ๋ฒจ ํ™•์ธ
165+
- name: Get PR labels
166+
id: pr-labels
167+
run: |
168+
echo "๐Ÿ” PR ๋ฒˆํ˜ธ: ${{ github.event.pull_request.number }}"
169+
pr_number="${{ github.event.pull_request.number }}"
170+
171+
echo "๐Ÿ“‹ PR ๋ผ๋ฒจ ์กฐํšŒ ์ค‘..."
172+
labels_json=$(gh pr view $pr_number --json labels -q '.labels[].name')
173+
echo "ํ™•์ธ๋œ ๋ผ๋ฒจ: $labels_json"
174+
175+
if [ -n "$labels_json" ]; then
176+
has_maintenance=$(echo $labels_json | grep -q 'maintenance' && echo 'true' || echo 'false')
177+
echo "maintenance ๋ผ๋ฒจ ํฌํ•จ ์—ฌ๋ถ€: $has_maintenance"
178+
echo "has_maintenance=$has_maintenance" >> $GITHUB_OUTPUT
179+
else
180+
echo "maintenance ๋ผ๋ฒจ์ด ์—†๋Š” PR์ž…๋‹ˆ๋‹ค. Week ์„ค์ •์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค."
181+
echo "has_maintenance=false" >> $GITHUB_OUTPUT
182+
fi
183+
env:
184+
GH_TOKEN: ${{ github.token }}
185+
186+
# Week ์„ค์ • ํ™•์ธ
187+
- name: Check Week setting in project
188+
if: ${{ steps.pr-labels.outputs.has_maintenance != 'true' }}
189+
run: |
190+
echo "๐Ÿ” Week ์„ค์ • ๊ฒ€์‚ฌ ์‹œ์ž‘"
191+
pr_number="${{ github.event.pull_request.number }}"
192+
193+
echo "๐Ÿ“‹ ํ”„๋กœ์ ํŠธ ์ •๋ณด ์กฐํšŒ ์ค‘..."
194+
project_data=$(gh api graphql -f query='
195+
query {
196+
repository(owner: "${{ github.repository_owner }}", name: "${{ github.event.repository.name }}") {
197+
pullRequest(number: '$pr_number') {
198+
projectItems(first: 10) {
199+
nodes {
200+
project {
201+
title
202+
}
203+
fieldValues(first: 20) {
204+
nodes {
205+
__typename
206+
... on ProjectV2ItemFieldIterationValue {
207+
title
208+
field {
209+
... on ProjectV2FieldCommon {
210+
name
211+
}
212+
}
213+
}
214+
}
215+
}
216+
}
217+
}
218+
}
219+
}
220+
}
221+
' 2>&1)
222+
223+
if [ $? -ne 0 ]; then
224+
echo "โš ๏ธ ํ”„๋กœ์ ํŠธ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."
225+
echo "$project_data"
226+
echo "## โŒ Week ์„ค์ • ๊ฒ€์ฆ ์‹คํŒจ" >> $GITHUB_STEP_SUMMARY
227+
echo "" >> $GITHUB_STEP_SUMMARY
228+
echo "ํ”„๋กœ์ ํŠธ ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. PR์ด ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด์ฃผ์„ธ์š”." >> $GITHUB_STEP_SUMMARY
229+
exit 1
230+
fi
231+
232+
echo "ํ”„๋กœ์ ํŠธ ๋ฐ์ดํ„ฐ:"
233+
echo "$project_data"
234+
235+
# Week ํ•„๋“œ ๊ฐ’ ์ถ”์ถœ (Iteration ํƒ€์ž…์˜ Week ํ•„๋“œ)
236+
week_value=$(echo "$project_data" | jq -r '
237+
.data.repository.pullRequest.projectItems.nodes[].fieldValues.nodes[] |
238+
select(.__typename == "ProjectV2ItemFieldIterationValue") |
239+
select(.field.name == "Week") |
240+
.title
241+
' 2>/dev/null | head -n 1)
242+
243+
echo "์ถ”์ถœ๋œ Week ๊ฐ’: '$week_value'"
244+
245+
if [ -z "$week_value" ] || [ "$week_value" = "null" ]; then
246+
echo "## โŒ Week ์„ค์ • ๊ฒ€์ฆ ์‹คํŒจ" >> $GITHUB_STEP_SUMMARY
247+
echo "" >> $GITHUB_STEP_SUMMARY
248+
echo "โš ๏ธ **PR์— Week ์„ค์ •์ด ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!**" >> $GITHUB_STEP_SUMMARY
249+
echo "" >> $GITHUB_STEP_SUMMARY
250+
echo "### ์„ค์ • ๋ฐฉ๋ฒ•" >> $GITHUB_STEP_SUMMARY
251+
echo "1. PR ์šฐ์ธก์˜ \`Projects\` ์„น์…˜์—์„œ \`๋ฆฌํŠธ์ฝ”๋“œ ์Šคํ„ฐ๋””\` ์˜† ๋“œ๋กญ๋‹ค์šด(โ–ผ) ํด๋ฆญ" >> $GITHUB_STEP_SUMMARY
252+
echo "2. ํ˜„์žฌ ์ฃผ์ฐจ๋ฅผ ์„ ํƒํ•ด์ฃผ์„ธ์š” (์˜ˆ: \`Week 14(current)\` ๋˜๋Š” \`Week 14\`)" >> $GITHUB_STEP_SUMMARY
253+
echo "" >> $GITHUB_STEP_SUMMARY
254+
echo "๐Ÿ“š [์ž์„ธํ•œ ๊ฐ€์ด๋“œ ๋ณด๊ธฐ](https://github.com/DaleStudy/leetcode-study/wiki/%EB%8B%B5%EC%95%88-%EC%A0%9C%EC%B6%9C-%EA%B0%80%EC%9D%B4%EB%93%9C#pr-%EC%9E%91%EC%84%B1%EB%B2%95)" >> $GITHUB_STEP_SUMMARY
255+
exit 1
256+
fi
257+
258+
echo "## โœ… Week ์„ค์ • ๊ฒ€์ฆ ์„ฑ๊ณต" >> $GITHUB_STEP_SUMMARY
259+
echo "" >> $GITHUB_STEP_SUMMARY
260+
echo "Week ์„ค์ •: **$week_value**" >> $GITHUB_STEP_SUMMARY
261+
echo "โœ… Week ์„ค์ •์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค!"
262+
env:
263+
GH_TOKEN: ${{ github.token }}

0 commit comments

Comments
ย (0)