Skip to content

Commit f513024

Browse files
committed
ci: add week filtering option for PR approval and merging
1 parent 671f1df commit f513024

File tree

1 file changed

+88
-8
lines changed

1 file changed

+88
-8
lines changed

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

Lines changed: 88 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ on:
1111
options:
1212
- approve-prs
1313
- merge-prs
14+
week:
15+
description: 'Week number to filter (optional, e.g., "1")'
16+
required: false
17+
type: string
18+
default: ""
1419
exclude_prs:
1520
description: 'PR numbers to exclude (comma-separated, e.g., "1972,1973")'
1621
required: false
@@ -40,11 +45,20 @@ jobs:
4045
excludes="[$(echo "$exclude_input" | sed 's/,/, /g')]"
4146
fi
4247
48+
# Build request payload
49+
week_input="${{ inputs.week }}"
50+
if [ -z "$week_input" ]; then
51+
payload="{\"repo_name\": \"${{ github.event.repository.name }}\", \"excludes\": $excludes}"
52+
else
53+
payload="{\"repo_name\": \"${{ github.event.repository.name }}\", \"week\": \"Week $week_input\", \"excludes\": $excludes}"
54+
fi
55+
56+
echo "์ฃผ์ฐจ ํ•„ํ„ฐ: ${week_input:-์ „์ฒด}"
4357
echo "์ œ์™ธํ•  PR: $excludes"
4458
4559
response=$(curl -s -X POST "https://github.dalestudy.com/approve-prs" \
4660
-H "Content-Type: application/json" \
47-
-d "{\"repo_name\": \"${{ github.event.repository.name }}\", \"excludes\": $excludes}")
61+
-d "$payload")
4862
4963
echo "response=$response" >> $GITHUB_OUTPUT
5064
echo "$response" | jq '.'
@@ -55,6 +69,10 @@ jobs:
5569
5670
success=$(echo "$response" | jq -r '.success // false')
5771
total=$(echo "$response" | jq -r '.total_open_prs // 0')
72+
week_filter=$(echo "$response" | jq -r '.week_filter // null')
73+
week_matched=$(echo "$response" | jq -r '.week_matched // 0')
74+
week_mismatched=$(echo "$response" | jq -r '.week_mismatched // 0')
75+
solving_excluded=$(echo "$response" | jq -r '.solving_excluded // 0')
5876
processed=$(echo "$response" | jq -r '.processed // 0')
5977
approved=$(echo "$response" | jq -r '.approved // 0')
6078
skipped=$(echo "$response" | jq -r '.skipped // 0')
@@ -69,18 +87,42 @@ jobs:
6987
fi
7088
7189
echo "" >> $GITHUB_STEP_SUMMARY
90+
if [ "$week_filter" != "null" ]; then
91+
echo "- ๐Ÿ—“๏ธ ์ฃผ์ฐจ ํ•„ํ„ฐ: **Week $week_filter**" >> $GITHUB_STEP_SUMMARY
92+
fi
7293
echo "- ๐Ÿ“‹ ์ „์ฒด Open PR: **$total**๊ฐœ" >> $GITHUB_STEP_SUMMARY
94+
if [ "$week_filter" != "null" ]; then
95+
echo "- โœ… Week $week_filter ๋งค์นญ: **$week_matched**๊ฐœ" >> $GITHUB_STEP_SUMMARY
96+
echo "- โŒ Week ๋ถˆ์ผ์น˜: **$week_mismatched**๊ฐœ" >> $GITHUB_STEP_SUMMARY
97+
echo "- ๐Ÿ”„ Solving ์ƒํƒœ ์ œ์™ธ: **$solving_excluded**๊ฐœ" >> $GITHUB_STEP_SUMMARY
98+
fi
7399
echo "- ๐Ÿ” ๊ฒ€์‚ฌํ•œ PR: **$processed**๊ฐœ" >> $GITHUB_STEP_SUMMARY
74100
echo "- โœ… ์Šน์ธํ•œ PR: **$approved**๊ฐœ" >> $GITHUB_STEP_SUMMARY
75101
echo "- โญ๏ธ ๊ฑด๋„ˆ๋›ด PR: **$skipped**๊ฐœ" >> $GITHUB_STEP_SUMMARY
76102
77103
# Show detailed results if available
78-
results=$(echo "$response" | jq -r '.results // []')
79-
if [ "$results" != "[]" ]; then
104+
result_count=$(echo "$response" | jq -r '.results | length')
105+
if [ "$result_count" -gt 0 ]; then
80106
echo "" >> $GITHUB_STEP_SUMMARY
81107
echo "### ๐Ÿ“ ์ƒ์„ธ ๊ฒฐ๊ณผ" >> $GITHUB_STEP_SUMMARY
82108
echo "" >> $GITHUB_STEP_SUMMARY
83-
echo "$response" | jq -r '.results[] | "- PR #\(.pr) [\(.title)]: \(if .skipped then "โญ๏ธ skipped (\(.reason))" elif .approved then "โœ… approved" else "โŒ failed (\(.error // "unknown"))" end)"' >> $GITHUB_STEP_SUMMARY
109+
110+
echo "$response" | jq -c '.results[]' | while read -r item; do
111+
pr=$(echo "$item" | jq -r '.pr')
112+
title=$(echo "$item" | jq -r '.title')
113+
skipped=$(echo "$item" | jq -r '.skipped // false')
114+
approved=$(echo "$item" | jq -r '.approved // false')
115+
reason=$(echo "$item" | jq -r '.reason // ""')
116+
error=$(echo "$item" | jq -r '.error // ""')
117+
118+
if [ "$skipped" = "true" ]; then
119+
echo "- PR #$pr [$title]: โญ๏ธ skipped ($reason)" >> $GITHUB_STEP_SUMMARY
120+
elif [ "$approved" = "true" ]; then
121+
echo "- PR #$pr [$title]: โœ… approved" >> $GITHUB_STEP_SUMMARY
122+
else
123+
echo "- PR #$pr [$title]: โŒ failed (${error:-unknown})" >> $GITHUB_STEP_SUMMARY
124+
fi
125+
done
84126
fi
85127
86128
merge-prs:
@@ -105,13 +147,23 @@ jobs:
105147
excludes="[$(echo "$exclude_input" | sed 's/,/, /g')]"
106148
fi
107149
150+
# Build request payload
151+
week_input="${{ inputs.week }}"
108152
merge_method="merge"
153+
154+
if [ -z "$week_input" ]; then
155+
payload="{\"repo_name\": \"${{ github.event.repository.name }}\", \"merge_method\": \"$merge_method\", \"excludes\": $excludes}"
156+
else
157+
payload="{\"repo_name\": \"${{ github.event.repository.name }}\", \"merge_method\": \"$merge_method\", \"week\": \"Week $week_input\", \"excludes\": $excludes}"
158+
fi
159+
109160
echo "๋จธ์ง€ ๋ฐฉ์‹: $merge_method"
161+
echo "์ฃผ์ฐจ ํ•„ํ„ฐ: ${week_input:-์ „์ฒด}"
110162
echo "์ œ์™ธํ•  PR: $excludes"
111163
112164
response=$(curl -s -X POST "https://github.dalestudy.com/merge-prs" \
113165
-H "Content-Type: application/json" \
114-
-d "{\"repo_name\": \"${{ github.event.repository.name }}\", \"merge_method\": \"$merge_method\", \"excludes\": $excludes}")
166+
-d "$payload")
115167
116168
echo "response=$response" >> $GITHUB_OUTPUT
117169
echo "$response" | jq '.'
@@ -122,6 +174,10 @@ jobs:
122174
123175
success=$(echo "$response" | jq -r '.success // false')
124176
total=$(echo "$response" | jq -r '.total_open_prs // 0')
177+
week_filter=$(echo "$response" | jq -r '.week_filter // null')
178+
week_matched=$(echo "$response" | jq -r '.week_matched // 0')
179+
week_mismatched=$(echo "$response" | jq -r '.week_mismatched // 0')
180+
solving_excluded=$(echo "$response" | jq -r '.solving_excluded // 0')
125181
processed=$(echo "$response" | jq -r '.processed // 0')
126182
merged=$(echo "$response" | jq -r '.merged // 0')
127183
skipped=$(echo "$response" | jq -r '.skipped // 0')
@@ -138,16 +194,40 @@ jobs:
138194
139195
echo "" >> $GITHUB_STEP_SUMMARY
140196
echo "- ๐Ÿ”ง ๋จธ์ง€ ๋ฐฉ์‹: **$merge_method**" >> $GITHUB_STEP_SUMMARY
197+
if [ "$week_filter" != "null" ]; then
198+
echo "- ๐Ÿ—“๏ธ ์ฃผ์ฐจ ํ•„ํ„ฐ: **Week $week_filter**" >> $GITHUB_STEP_SUMMARY
199+
fi
141200
echo "- ๐Ÿ“‹ ์ „์ฒด Open PR: **$total**๊ฐœ" >> $GITHUB_STEP_SUMMARY
201+
if [ "$week_filter" != "null" ]; then
202+
echo "- โœ… Week $week_filter ๋งค์นญ: **$week_matched**๊ฐœ" >> $GITHUB_STEP_SUMMARY
203+
echo "- โŒ Week ๋ถˆ์ผ์น˜: **$week_mismatched**๊ฐœ" >> $GITHUB_STEP_SUMMARY
204+
echo "- ๐Ÿ”„ Solving ์ƒํƒœ ์ œ์™ธ: **$solving_excluded**๊ฐœ" >> $GITHUB_STEP_SUMMARY
205+
fi
142206
echo "- ๐Ÿ” ๊ฒ€์‚ฌํ•œ PR: **$processed**๊ฐœ" >> $GITHUB_STEP_SUMMARY
143207
echo "- โœ… ๋จธ์ง€ํ•œ PR: **$merged**๊ฐœ" >> $GITHUB_STEP_SUMMARY
144208
echo "- โญ๏ธ ๊ฑด๋„ˆ๋›ด PR: **$skipped**๊ฐœ" >> $GITHUB_STEP_SUMMARY
145209
146210
# Show detailed results if available
147-
results=$(echo "$response" | jq -r '.results // []')
148-
if [ "$results" != "[]" ]; then
211+
result_count=$(echo "$response" | jq -r '.results | length')
212+
if [ "$result_count" -gt 0 ]; then
149213
echo "" >> $GITHUB_STEP_SUMMARY
150214
echo "### ๐Ÿ“ ์ƒ์„ธ ๊ฒฐ๊ณผ" >> $GITHUB_STEP_SUMMARY
151215
echo "" >> $GITHUB_STEP_SUMMARY
152-
echo "$response" | jq -r '.results[] | "- PR #\(.pr) [\(.title)]: \(if .skipped then "โญ๏ธ skipped (\(.reason))" elif .merged then "โœ… merged" else "โŒ failed (\(.error // "unknown"))" end)"' >> $GITHUB_STEP_SUMMARY
216+
217+
echo "$response" | jq -c '.results[]' | while read -r item; do
218+
pr=$(echo "$item" | jq -r '.pr')
219+
title=$(echo "$item" | jq -r '.title')
220+
skipped=$(echo "$item" | jq -r '.skipped // false')
221+
merged=$(echo "$item" | jq -r '.merged // false')
222+
reason=$(echo "$item" | jq -r '.reason // ""')
223+
error=$(echo "$item" | jq -r '.error // ""')
224+
225+
if [ "$skipped" = "true" ]; then
226+
echo "- PR #$pr [$title]: โญ๏ธ skipped ($reason)" >> $GITHUB_STEP_SUMMARY
227+
elif [ "$merged" = "true" ]; then
228+
echo "- PR #$pr [$title]: โœ… merged" >> $GITHUB_STEP_SUMMARY
229+
else
230+
echo "- PR #$pr [$title]: โŒ failed (${error:-unknown})" >> $GITHUB_STEP_SUMMARY
231+
fi
232+
done
153233
fi

0 commit comments

Comments
ย (0)