Skip to content

Commit 8f5d650

Browse files
committed
chore: Separate file validation steps in integration workflow
1 parent 00c0a54 commit 8f5d650

File tree

1 file changed

+51
-54
lines changed

1 file changed

+51
-54
lines changed

โ€Ž.github/workflows/integration.yaml

+51-54
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,16 @@ jobs:
2525
env:
2626
GH_TOKEN: ${{ github.token }}
2727

28-
- name: Check for 1. missing end line breaks and 2. control characters in filenames and 3. filename rules
28+
# ์ค„๋ฐ”๊ฟˆ ์ฒดํฌ
29+
- name: Check for missing end line breaks
2930
run: |
30-
# ํ•„์š”ํ•œ ๊ฐ’๋“ค ๋ฏธ๋ฆฌ ์„ค์ •
31-
pr_author="${{ github.event.pull_request.user.login }}"
32-
pr_number="${{ github.event.pull_request.number }}"
33-
labels_json=$(gh pr view $pr_number --json labels -q '.labels[].name')
34-
has_maintenance=false
35-
if echo "$labels_json" | grep -q "maintenance"; then
36-
has_maintenance=true
37-
fi
38-
3931
# ๋”ฐ์˜ดํ‘œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ํŒŒ์ผ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ
4032
files=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | tr -d '"')
33+
success=true
34+
4135
echo "๋ณ€๊ฒฝ๋œ ํŒŒ์ผ ๋ชฉ๋ก:"
4236
echo "$files"
4337
44-
success=true
45-
46-
# ์ค„๋ฐ”๊ฟˆ ์ฒดํฌ
4738
echo "## ์ค„๋ฐ”๊ฟˆ ๋ˆ„๋ฝ ํŒŒ์ผ" >> $GITHUB_STEP_SUMMARY
4839
for file in $files; do
4940
if [ -s "$file" ] && [ "$(tail -c 1 $file | wc -l)" -eq 0 ]; then
@@ -53,63 +44,69 @@ jobs:
5344
fi
5445
done
5546
56-
# ์ œ์–ด๋ฌธ์ž ์ฒดํฌ
57-
echo -e "\n## ์ œ์–ด๋ฌธ์ž๊ฐ€ ํฌํ•จ๋œ ํŒŒ์ผ๋ช…" >> $GITHUB_STEP_SUMMARY
47+
if [ "$success" = false ]; then
48+
echo -e "\n:warning: ํŒŒ์ผ ๋์˜ ๋ˆ„๋ฝ๋œ ์ค„๋ฐ”๊ฟˆ์„ ์ถ”๊ฐ€ํ•ด ์ฃผ์„ธ์š”." >> $GITHUB_STEP_SUMMARY
49+
exit 1
50+
fi
51+
52+
# ์ œ์–ด๋ฌธ์ž ์ฒดํฌ
53+
- name: Check for control characters in filenames
54+
run: |
55+
files=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | tr -d '"')
56+
success=true
57+
58+
echo "## ์ œ์–ด๋ฌธ์ž๊ฐ€ ํฌํ•จ๋œ ํŒŒ์ผ๋ช…" >> $GITHUB_STEP_SUMMARY
5859
for file in $files; do
5960
# basename์œผ๋กœ ํŒŒ์ผ๋ช…๋งŒ ์ถ”์ถœํ•˜๊ณ  ๋”ฐ์˜ดํ‘œ ์ œ๊ฑฐ
6061
filename=$(basename "$file" | tr -d '"')
6162
6263
# ๋ฐฑ์Šฌ๋ž˜์‹œ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ œ์–ด๋ฌธ์ž๋“ค ์ฒดํฌ (\b, \n, \r, \t ๋“ฑ)
63-
if printf '%q' "$filename" | grep -q '\\[bnrtfv]'; then
64-
echo "- $file (์ œ์–ด๋ฌธ์ž ํฌํ•จ)" >> $GITHUB_STEP_SUMMARY
65-
success=false
66-
fi
64+
if printf '%q' "$filename" | grep -q '\\[bnrtfv]' || \
6765
68-
# ์ผ๋ฐ˜์ ์ธ ์ œ์–ด๋ฌธ์ž๋“ค ์ฒดํฌ (0x00-0x1F, 0x7F)
69-
if echo -n "$filename" | LC_ALL=C grep -q '[[:cntrl:]]'; then
70-
echo "- $file (์ œ์–ด๋ฌธ์ž ํฌํ•จ)" >> $GITHUB_STEP_SUMMARY
71-
success=false
72-
fi
66+
# ์ผ๋ฐ˜์ ์ธ ์ œ์–ด๋ฌธ์ž๋“ค ์ฒดํฌ (0x00-0x1F, 0x7F)
67+
echo -n "$filename" | LC_ALL=C grep -q '[[:cntrl:]]' || \
7368
74-
# ํŠน์ˆ˜ ์ œ์–ด๋ฌธ์ž๋“ค ์ฒดํฌ
75-
if echo -n "$filename" | grep -q $'[\x00-\x1F\x7F]'; then
76-
echo "- $file (์ œ์–ด๋ฌธ์ž ํฌํ•จ)" >> $GITHUB_STEP_SUMMARY
77-
success=false
78-
fi
69+
# ํŠน์ˆ˜ ์ œ์–ด๋ฌธ์ž๋“ค ์ฒดํฌ
70+
echo -n "$filename" | grep -q $'[\x00-\x1F\x7F]' || \
7971
80-
# ์ด์Šค์ผ€์ดํ”„ ์‹œํ€€์Šค ์ฒดํฌ
81-
if [[ "$filename" =~ (\\[0-7]{1,3}|\\x[0-9a-fA-F]{1,2}) ]]; then
72+
# ์ด์Šค์ผ€์ดํ”„ ์‹œํ€€์Šค ์ฒดํฌ
73+
[[ "$filename" =~ (\\[0-7]{1,3}|\\x[0-9a-fA-F]{1,2}) ]]; then
8274
echo "- $file (์ œ์–ด๋ฌธ์ž ํฌํ•จ)" >> $GITHUB_STEP_SUMMARY
8375
success=false
8476
fi
8577
done
8678
87-
# maintenance ๋ผ๋ฒจ์ด ์—†๋Š” ๊ฒฝ์šฐ์—๋งŒ ํŒŒ์ผ๋ช… ๊ทœ์น™ ์ฒดํฌ
88-
if [ "$has_maintenance" != "true" ]; then
89-
echo -e "\n## ํŒŒ์ผ๋ช… ๊ทœ์น™ ์œ„๋ฐ˜" >> $GITHUB_STEP_SUMMARY
90-
for file in $files; do
91-
if [ -f "$file" ]; then
92-
93-
# ํŒŒ์ผ๋ช…๋งŒ ์ถ”์ถœ (๊ฒฝ๋กœ ์ œ์™ธ)
94-
filename=$(basename "$file")
95-
96-
# ํŒŒ์ผ๋ช…์ด GitHub๊ณ„์ •๋ช…์ธ์ง€ ํ™•์ธ
97-
shopt -s nocasematch
98-
if [[ ! "$filename" = "$pr_author"* ]]; then
99-
echo "- $file (ํŒŒ์ผ๋ช…์€ '$pr_author'ํ˜•์‹์œผ๋กœ ํ•ด์ฃผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค)" >> $GITHUB_STEP_SUMMARY
100-
success=false
101-
fi
102-
fi
103-
done
79+
if [ "$success" = false ]; then
80+
echo -e "\n:warning: ํŒŒ์ผ๋ช…์—์„œ ์ œ์–ด๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•ด ์ฃผ์„ธ์š”." >> $GITHUB_STEP_SUMMARY
81+
exit 1
10482
fi
10583
106-
if [ "$success" = false ]; then
107-
echo -e "\n:warning: ์œ„ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•ด ์ฃผ์„ธ์š”:" >> $GITHUB_STEP_SUMMARY
108-
echo "1. ํŒŒ์ผ ๋์˜ ๋ˆ„๋ฝ๋œ ์ค„๋ฐ”๊ฟˆ์„ ์ถ”๊ฐ€ํ•ด ์ฃผ์„ธ์š”." >> $GITHUB_STEP_SUMMARY
109-
echo "2. ํŒŒ์ผ๋ช…์—์„œ ์ œ์–ด๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•ด ์ฃผ์„ธ์š”." >> $GITHUB_STEP_SUMMARY
110-
if [[ ! "$pr_labels" =~ "maintenance" ]]; then
111-
echo "3. ํŒŒ์ผ๋ช…์€ ๋ฐ˜๋“œ์‹œ 'GitHub๊ณ„์ •๋ช…' ๋˜๋Š” 'GitHub๊ณ„์ •๋ช…-xxx' ํ˜•์‹์œผ๋กœ ํ•ด์ฃผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ: ${pr_author}.ts, ${pr_author}-1.ts, ${pr_author}-2.ts)" >> $GITHUB_STEP_SUMMARY
84+
# ํŒŒ์ผ๋ช… ๊ทœ์น™ ์ฒดํฌ - maintenance ๋ผ๋ฒจ์ด ์—†๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‹คํ–‰
85+
- name: Check filename rules
86+
if: ${{ steps.pr-labels.outputs.has_maintenance != 'true' }}
87+
run: |
88+
files=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | tr -d '"')
89+
pr_author="${{ github.event.pull_request.user.login }}"
90+
success=true
91+
92+
echo "## ํŒŒ์ผ๋ช… ๊ทœ์น™ ์œ„๋ฐ˜" >> $GITHUB_STEP_SUMMARY
93+
for file in $files; do
94+
if [ -f "$file" ]; then
95+
96+
# ํŒŒ์ผ๋ช…๋งŒ ์ถ”์ถœ (๊ฒฝ๋กœ ์ œ์™ธ)
97+
filename=$(basename "$file")
98+
99+
# ํŒŒ์ผ๋ช…์ด GitHub๊ณ„์ •๋ช…์ธ์ง€ ํ™•์ธ
100+
shopt -s nocasematch
101+
if [[ ! "$filename" = "$pr_author"* ]]; then
102+
echo "- $file (ํŒŒ์ผ๋ช…์€ '$pr_author'ํ˜•์‹์œผ๋กœ ํ•ด์ฃผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค)" >> $GITHUB_STEP_SUMMARY
103+
success=false
104+
fi
112105
fi
106+
done
107+
108+
if [ "$success" = false ]; then
109+
echo -e "\n:warning: ํŒŒ์ผ๋ช…์€ ๋ฐ˜๋“œ์‹œ 'GitHub๊ณ„์ •๋ช…' ๋˜๋Š” 'GitHub๊ณ„์ •๋ช…-xxx' ํ˜•์‹์œผ๋กœ ํ•ด์ฃผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ: ${pr_author}.ts, ${pr_author}-1.ts, ${pr_author}-2.ts)" >> $GITHUB_STEP_SUMMARY
113110
exit 1
114111
fi
115112
env:

0 commit comments

Comments
ย (0)