Skip to content

Commit f383003

Browse files
committed
Chore: 통합 워크플로우에 문제제출시 사용자명, 파일명 검증 스텝 추가
1 parent 25a0e1f commit f383003

File tree

1 file changed

+34
-5
lines changed

1 file changed

+34
-5
lines changed

.github/workflows/integration.yaml

+34-5
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,22 @@ jobs:
1111
with:
1212
fetch-depth: 0
1313

14-
- name: Check for 1. missing end line breaks and 2. control characters in filenames
14+
# PR 라벨 확인
15+
- name: Get PR labels
16+
id: pr-labels
17+
run: |
18+
labels=$(gh pr view ${{ github.event.pull_request.number }} --json labels -q '.labels[].name' || echo "")
19+
echo "labels=$labels" >> $GITHUB_OUTPUT
20+
env:
21+
GH_TOKEN: ${{ github.token }}
22+
23+
- name: Check for 1. missing end line breaks and 2. control characters in filenames and 3. filename rules
1524
run: |
1625
# 따옴표를 제거하고 파일 목록 가져오기
1726
files=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | tr -d '"')
1827
echo "변경된 파일 목록:"
1928
echo "$files"
20-
29+
2130
success=true
2231
2332
# 줄바꿈 체크
@@ -35,13 +44,13 @@ jobs:
3544
for file in $files; do
3645
# basename으로 파일명만 추출하고 따옴표 제거
3746
filename=$(basename "$file" | tr -d '"')
38-
47+
3948
# 백슬래시로 시작하는 제어문자들 체크 (\b, \n, \r, \t 등)
4049
if printf '%q' "$filename" | grep -q '\\[bnrtfv]'; then
4150
echo "- $file (제어문자 포함)" >> $GITHUB_STEP_SUMMARY
4251
success=false
4352
fi
44-
53+
4554
# 일반적인 제어문자들 체크 (0x00-0x1F, 0x7F)
4655
if echo -n "$filename" | LC_ALL=C grep -q '[[:cntrl:]]'; then
4756
echo "- $file (제어문자 포함)" >> $GITHUB_STEP_SUMMARY
@@ -53,17 +62,37 @@ jobs:
5362
echo "- $file (제어문자 포함)" >> $GITHUB_STEP_SUMMARY
5463
success=false
5564
fi
56-
65+
5766
# 이스케이프 시퀀스 체크
5867
if [[ "$filename" =~ (\\[0-7]{1,3}|\\x[0-9a-fA-F]{1,2}) ]]; then
5968
echo "- $file (제어문자 포함)" >> $GITHUB_STEP_SUMMARY
6069
success=false
6170
fi
6271
done
6372
73+
# maintenance 라벨이 없는 경우에만 파일명 규칙 체크
74+
if [[ ! "${{ steps.pr-labels.outputs.labels }}" =~ "maintenance" ]]; then
75+
echo -e "\n## 파일명 규칙 위반" >> $GITHUB_STEP_SUMMARY
76+
for file in $files; do
77+
if [ -f "$file" ]; then
78+
filename=$(basename "$file" | tr -d '"')
79+
github_username="${{ github.event.pull_request.user.login }}"
80+
81+
# 파일명이 GitHub계정명인지 확인
82+
if [[ ! "$filename" =~ ^"$github_username" ]]; then
83+
echo "- $file (파일명은 '$github_username'로 해주셔야 합니다)" >> $GITHUB_STEP_SUMMARY
84+
success=false
85+
fi
86+
fi
87+
done
88+
fi
89+
6490
if [ "$success" = false ]; then
6591
echo -e "\n:warning: 위 문제들을 해결해 주세요:" >> $GITHUB_STEP_SUMMARY
6692
echo "1. 파일 끝의 누락된 줄바꿈을 추가해 주세요." >> $GITHUB_STEP_SUMMARY
6793
echo "2. 파일명에서 제어문자를 제거해 주세요." >> $GITHUB_STEP_SUMMARY
94+
if [[ ! "${{ steps.pr-labels.outputs.labels }}" =~ "maintenance" ]]; then
95+
echo "3. 파일명은 반드시 'GitHub계정명'으로 해주셔야 합니다. (예: ${{ github.event.pull_request.user.login }}.ts)" >> $GITHUB_STEP_SUMMARY
96+
fi
6897
exit 1
6998
fi

0 commit comments

Comments
 (0)