@@ -15,13 +15,27 @@ jobs:
1515 - name : Get PR labels
1616 id : pr-labels
1717 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
2025 env :
2126 GH_TOKEN : ${{ github.token }}
2227
2328 - name : Check for 1. missing end line breaks and 2. control characters in filenames and 3. filename rules
2429 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+
2539 # 따옴표를 제거하고 파일 목록 가져오기
2640 files=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | tr -d '"')
2741 echo "변경된 파일 목록:"
@@ -71,16 +85,16 @@ jobs:
7185 done
7286
7387 # maintenance 라벨이 없는 경우에만 파일명 규칙 체크
74- if [[ ! "${{ steps.pr-labels.outputs.labels }}" =~ "maintenance" ] ]; then
88+ if [ "$has_maintenance" != "true" ]; then
7589 echo -e "\n## 파일명 규칙 위반" >> $GITHUB_STEP_SUMMARY
7690 for file in $files; do
7791 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")
8194 # 파일명이 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
8498 success=false
8599 fi
86100 fi
@@ -91,8 +105,10 @@ jobs:
91105 echo -e "\n:warning: 위 문제들을 해결해 주세요:" >> $GITHUB_STEP_SUMMARY
92106 echo "1. 파일 끝의 누락된 줄바꿈을 추가해 주세요." >> $GITHUB_STEP_SUMMARY
93107 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
96110 fi
97111 exit 1
98112 fi
113+ env :
114+ GH_TOKEN : ${{ github.token }}
0 commit comments