@@ -15,13 +15,27 @@ jobs:
15
15
- name : Get PR labels
16
16
id : pr-labels
17
17
run : |
18
- labels=$(gh pr view ${{ github.event.pull_request.number }} --json labels -q '.labels[].name' || echo "")
19
- echo "labels=$labels" >> $GITHUB_OUTPUT
18
+ pr_number="${{ github.event.pull_request.number }}"
19
+ labels_json=$(gh pr view $pr_number --json labels -q '.labels[].name')
20
+ if [ -n "$labels_json" ]; then
21
+ echo "has_maintenance=$(echo $labels_json | grep -q 'maintenance' && echo 'true' || echo 'false')" >> $GITHUB_OUTPUT
22
+ else
23
+ echo "has_maintenance=false" >> $GITHUB_OUTPUT
24
+ fi
20
25
env :
21
26
GH_TOKEN : ${{ github.token }}
22
27
23
28
- name : Check for 1. missing end line breaks and 2. control characters in filenames and 3. filename rules
24
29
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
+
25
39
# 따옴표를 제거하고 파일 목록 가져오기
26
40
files=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | tr -d '"')
27
41
echo "변경된 파일 목록:"
@@ -71,16 +85,16 @@ jobs:
71
85
done
72
86
73
87
# maintenance 라벨이 없는 경우에만 파일명 규칙 체크
74
- if [[ ! "${{ steps.pr-labels.outputs.labels }}" =~ "maintenance" ] ]; then
88
+ if [ "$has_maintenance" != "true" ]; then
75
89
echo -e "\n## 파일명 규칙 위반" >> $GITHUB_STEP_SUMMARY
76
90
for file in $files; do
77
91
if [ -f "$file" ]; then
78
- filename=$(basename "$file" | tr -d '"')
79
- github_username="${{ github.event.pull_request.user.login }}"
80
-
92
+ # 파일명만 추출 (경로 제외)
93
+ filename=$(basename "$file")
81
94
# 파일명이 GitHub계정명인지 확인
82
- if [[ ! "$filename" =~ ^"$github_username" ]]; then
83
- echo "- $file (파일명은 '$github_username'로 해주셔야 합니다)" >> $GITHUB_STEP_SUMMARY
95
+ shopt -s nocasematch
96
+ if [[ ! "$filename" = "$pr_author"* ]]; then
97
+ echo "- $file (파일명은 '$pr_author'형식으로 해주셔야 합니다)" >> $GITHUB_STEP_SUMMARY
84
98
success=false
85
99
fi
86
100
fi
@@ -91,8 +105,10 @@ jobs:
91
105
echo -e "\n:warning: 위 문제들을 해결해 주세요:" >> $GITHUB_STEP_SUMMARY
92
106
echo "1. 파일 끝의 누락된 줄바꿈을 추가해 주세요." >> $GITHUB_STEP_SUMMARY
93
107
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
108
+ if [[ ! "$pr_labels " =~ "maintenance" ]]; then
109
+ echo "3. 파일명은 반드시 'GitHub계정명'형식으로 해주셔야 합니다. (예: ${pr_author }.ts)" >> $GITHUB_STEP_SUMMARY
96
110
fi
97
111
exit 1
98
112
fi
113
+ env :
114
+ GH_TOKEN : ${{ github.token }}
0 commit comments