Skip to content

Commit ada6ec9

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

File tree

1 file changed

+114
-5
lines changed

1 file changed

+114
-5
lines changed

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

Lines changed: 114 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,19 @@ jobs:
77
linelint:
88
runs-on: ubuntu-latest
99
steps:
10-
- uses: actions/checkout@v4
11-
with:
12-
fetch-depth: 0
10+
- uses: actions/checkout@v5
1311

1412
# PR 라벨 확인
1513
- name: Get PR labels
1614
id: pr-labels
1715
run: |
1816
echo "πŸ” PR 번호: ${{ github.event.pull_request.number }}"
1917
pr_number="${{ github.event.pull_request.number }}"
20-
18+
2119
echo "πŸ“‹ PR 라벨 쑰회 쀑..."
2220
labels_json=$(gh pr view $pr_number --json labels -q '.labels[].name')
2321
echo "ν™•μΈλœ 라벨: $labels_json"
24-
22+
2523
if [ -n "$labels_json" ]; then
2624
has_maintenance=$(echo $labels_json | grep -q 'maintenance' && echo 'true' || echo 'false')
2725
echo "maintenance 라벨 포함 μ—¬λΆ€: $has_maintenance"
@@ -153,3 +151,114 @@ jobs:
153151
fi
154152
env:
155153
GH_TOKEN: ${{ github.token }}
154+
155+
check-project:
156+
runs-on: ubuntu-latest
157+
permissions:
158+
contents: read
159+
pull-requests: read
160+
161+
steps:
162+
- uses: actions/checkout@v5
163+
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: ${{ secrets.PROJECT_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+
230+
exit 1
231+
fi
232+
233+
echo "ν”„λ‘œμ νŠΈ 데이터:"
234+
echo "$project_data"
235+
236+
# Week ν•„λ“œ κ°’ μΆ”μΆœ (Iteration νƒ€μž…μ˜ Week ν•„λ“œ)
237+
week_value=$(echo "$project_data" | jq -r '
238+
.data.repository.pullRequest.projectItems.nodes[].fieldValues.nodes[] |
239+
select(.__typename == "ProjectV2ItemFieldIterationValue") |
240+
select(.field.name == "Week") |
241+
.title
242+
' 2>/dev/null | head -n 1)
243+
244+
echo "μΆ”μΆœλœ Week κ°’: '$week_value'"
245+
246+
if [ -z "$week_value" ] || [ "$week_value" = "null" ]; then
247+
echo "## ❌ Week μ„€μ • 검증 μ‹€νŒ¨" >> $GITHUB_STEP_SUMMARY
248+
echo "" >> $GITHUB_STEP_SUMMARY
249+
echo "⚠️ **PR에 Week 섀정이 λˆ„λ½λ˜μ—ˆμŠ΅λ‹ˆλ‹€!**" >> $GITHUB_STEP_SUMMARY
250+
echo "" >> $GITHUB_STEP_SUMMARY
251+
echo "### μ„€μ • 방법" >> $GITHUB_STEP_SUMMARY
252+
echo "1. PR 우츑의 \`Projects\` μ„Ήμ…˜μ—μ„œ \`λ¦¬νŠΈμ½”λ“œ μŠ€ν„°λ””\` μ˜† λ“œλ‘­λ‹€μš΄(β–Ό) 클릭" >> $GITHUB_STEP_SUMMARY
253+
echo "2. ν˜„μž¬ μ£Όμ°¨λ₯Ό μ„ νƒν•΄μ£Όμ„Έμš” (예: \`Week 14(current)\` λ˜λŠ” \`Week 14\`)" >> $GITHUB_STEP_SUMMARY
254+
echo "" >> $GITHUB_STEP_SUMMARY
255+
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
256+
exit 1
257+
fi
258+
259+
echo "## βœ… Week μ„€μ • 검증 성곡" >> $GITHUB_STEP_SUMMARY
260+
echo "" >> $GITHUB_STEP_SUMMARY
261+
echo "Week μ„€μ •: **$week_value**" >> $GITHUB_STEP_SUMMARY
262+
echo "βœ… Week 섀정이 μ˜¬λ°”λ₯΄κ²Œ λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€!"
263+
env:
264+
GH_TOKEN: ${{ secrets.PROJECT_TOKEN }}

0 commit comments

Comments
Β (0)