@@ -15,11 +15,19 @@ jobs:
15
15
- name : Get PR labels
16
16
id : pr-labels
17
17
run : |
18
+ echo "🔍 PR 번호: ${{ github.event.pull_request.number }}"
18
19
pr_number="${{ github.event.pull_request.number }}"
20
+
21
+ echo "📋 PR 라벨 조회 중..."
19
22
labels_json=$(gh pr view $pr_number --json labels -q '.labels[].name')
23
+ echo "확인된 라벨: $labels_json"
24
+
20
25
if [ -n "$labels_json" ]; then
21
- echo "has_maintenance=$(echo $labels_json | grep -q 'maintenance' && echo 'true' || echo 'false')" >> $GITHUB_OUTPUT
26
+ has_maintenance=$(echo $labels_json | grep -q 'maintenance' && echo 'true' || echo 'false')
27
+ echo "maintenance 라벨 포함 여부: $has_maintenance"
28
+ echo "has_maintenance=$has_maintenance" >> $GITHUB_OUTPUT
22
29
else
30
+ echo "maintenance 라벨이 없는 PR입니다. 파일명 규칙 검사를 진행합니다."
23
31
echo "has_maintenance=false" >> $GITHUB_OUTPUT
24
32
fi
25
33
env :
@@ -28,35 +36,46 @@ jobs:
28
36
# 줄바꿈 체크
29
37
- name : Check for missing end line breaks
30
38
run : |
31
- # 따옴표를 제거하고 파일 목록 가져오기
39
+ echo "🔍 줄바꿈 검사 시작"
40
+ echo "기준 커밋: ${{ github.event.pull_request.base.sha }}"
41
+ echo "현재 커밋: ${{ github.sha }}"
42
+
32
43
files=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | tr -d '"')
33
44
success=true
34
45
35
- echo "변경된 파일 목록:"
46
+ echo "📝 변경된 파일 목록:"
36
47
echo "$files"
37
48
38
49
echo "## 줄바꿈 누락 파일" >> $GITHUB_STEP_SUMMARY
39
50
for file in $files; do
51
+ echo "검사 중: $file"
40
52
if [ -s "$file" ] && [ "$(tail -c 1 $file | wc -l)" -eq 0 ]; then
41
- echo "발견된 줄바꿈 누락: $file"
53
+ echo "❌ 줄바꿈 누락: $file"
42
54
echo "- $file" >> $GITHUB_STEP_SUMMARY
43
55
success=false
56
+ else
57
+ echo "✅ 정상: $file"
44
58
fi
45
59
done
46
60
47
61
if [ "$success" = false ]; then
62
+ echo "⚠️ 줄바꿈 검사 실패"
48
63
echo -e "\n:warning: 파일 끝의 누락된 줄바꿈을 추가해 주세요." >> $GITHUB_STEP_SUMMARY
49
64
exit 1
65
+ else
66
+ echo "✅ 모든 파일의 줄바꿈 정상"
50
67
fi
51
68
52
69
# 제어문자 체크
53
70
- name : Check for control characters in filenames
54
71
run : |
72
+ echo "🔍 파일명 제어문자 검사 시작"
55
73
files=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | tr -d '"')
56
74
success=true
57
75
58
76
echo "## 제어문자가 포함된 파일명" >> $GITHUB_STEP_SUMMARY
59
77
for file in $files; do
78
+ echo "검사 중: $file"
60
79
# basename으로 파일명만 추출하고 따옴표 제거
61
80
filename=$(basename "$file" | tr -d '"')
62
81
@@ -71,45 +90,66 @@ jobs:
71
90
72
91
# 이스케이프 시퀀스 체크
73
92
[[ "$filename" =~ (\\[0-7]{1,3}|\\x[0-9a-fA-F]{1,2}) ]]; then
93
+ echo "❌ 제어문자 발견: $file"
74
94
echo "- $file (제어문자 포함)" >> $GITHUB_STEP_SUMMARY
75
95
success=false
96
+ else
97
+ echo "✅ 정상: $file"
76
98
fi
77
99
done
78
100
79
101
if [ "$success" = false ]; then
102
+ echo "⚠️ 제어문자 검사 실패"
80
103
echo -e "\n:warning: 파일명에서 제어문자를 제거해 주세요." >> $GITHUB_STEP_SUMMARY
81
104
exit 1
105
+ else
106
+ echo "✅ 모든 파일명이 제어문자 없이 정상"
82
107
fi
83
108
84
109
# 파일명 규칙 체크 - maintenance 라벨이 없는 경우에만 실행
85
110
- name : Check filename rules
86
111
if : ${{ steps.pr-labels.outputs.has_maintenance != 'true' }}
87
112
run : |
88
- # PR의 첫 커밋을 확인
113
+ echo "🔍 파일명 규칙 검사 시작"
114
+ echo "PR 작성자: ${{ github.event.pull_request.user.login }}"
115
+
116
+ # PR의 공통 조상 커밋을 찾아서 merge base로 설정
89
117
merge_base=$(git merge-base ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }})
118
+ echo "Merge base 커밋: $merge_base"
119
+
90
120
files=$(git diff --name-only $merge_base ${{ github.event.pull_request.head.sha }} | tr -d '"')
91
121
pr_author="${{ github.event.pull_request.user.login }}"
92
122
success=true
93
123
124
+ echo "📝 검사할 파일 목록:"
125
+ echo "$files"
126
+
94
127
echo "## 파일명 규칙 위반" >> $GITHUB_STEP_SUMMARY
95
128
for file in $files; do
96
129
if [ -f "$file" ]; then
97
130
131
+ echo "검사 중: $file"
98
132
# 파일명만 추출 (경로 제외)
99
133
filename=$(basename "$file")
100
134
101
135
# 파일명이 GitHub계정명인지 확인
102
136
shopt -s nocasematch
103
137
if [[ ! "$filename" = "$pr_author"* ]]; then
138
+ echo "❌ 규칙 위반: $file"
104
139
echo "- $file" >> $GITHUB_STEP_SUMMARY
105
140
success=false
141
+ else
142
+ echo "✅ 정상: $file"
106
143
fi
107
144
fi
108
145
done
109
146
110
147
if [ "$success" = false ]; then
148
+ echo "⚠️ 파일명 규칙 검사 실패"
111
149
echo -e "\n:warning: 파일명은 반드시 'GitHub계정명' 또는 'GitHub계정명-xxx' 형식으로 해주셔야 합니다. (예: ${pr_author}.ts, ${pr_author}-1.ts, ${pr_author}-2.ts)" >> $GITHUB_STEP_SUMMARY
112
150
exit 1
151
+ else
152
+ echo "✅ 모든 파일명이 규칙에 맞게 정상"
113
153
fi
114
154
env :
115
155
GH_TOKEN : ${{ github.token }}
0 commit comments