|  | 
|  | 1 | +name: Check Project Week ๐๏ธ | 
|  | 2 | + | 
|  | 3 | +on: | 
|  | 4 | +  pull_request_target: | 
|  | 5 | + | 
|  | 6 | +jobs: | 
|  | 7 | +  check-project: | 
|  | 8 | +    runs-on: ubuntu-latest | 
|  | 9 | +    permissions: | 
|  | 10 | +      contents: read | 
|  | 11 | +      pull-requests: write | 
|  | 12 | + | 
|  | 13 | +    steps: | 
|  | 14 | +      # GitHub App Token ์์ฑ | 
|  | 15 | +      - name: Generate GitHub App Token | 
|  | 16 | +        id: app-token | 
|  | 17 | +        uses: actions/create-github-app-token@v1 | 
|  | 18 | +        with: | 
|  | 19 | +          app-id: ${{ secrets.APP_ID }} | 
|  | 20 | +          private-key: ${{ secrets.APP_PRIVATE_KEY }} | 
|  | 21 | + | 
|  | 22 | +      # PR ๋ผ๋ฒจ ํ์ธ | 
|  | 23 | +      - name: Get PR labels | 
|  | 24 | +        id: pr-labels | 
|  | 25 | +        run: | | 
|  | 26 | +          echo "๐ PR ๋ฒํธ: ${{ github.event.pull_request.number }}" | 
|  | 27 | +          pr_number="${{ github.event.pull_request.number }}" | 
|  | 28 | +
 | 
|  | 29 | +          echo "๐ PR ๋ผ๋ฒจ ์กฐํ ์ค..." | 
|  | 30 | +          labels_json=$(gh pr view $pr_number --json labels -q '.labels[].name') | 
|  | 31 | +          echo "ํ์ธ๋ ๋ผ๋ฒจ: $labels_json" | 
|  | 32 | +
 | 
|  | 33 | +          if [ -n "$labels_json" ]; then | 
|  | 34 | +            has_maintenance=$(echo $labels_json | grep -q 'maintenance' && echo 'true' || echo 'false') | 
|  | 35 | +            echo "maintenance ๋ผ๋ฒจ ํฌํจ ์ฌ๋ถ: $has_maintenance" | 
|  | 36 | +            echo "has_maintenance=$has_maintenance" >> $GITHUB_OUTPUT | 
|  | 37 | +          else | 
|  | 38 | +            echo "maintenance ๋ผ๋ฒจ์ด ์๋ PR์
๋๋ค. Week ์ค์ ์ ๊ฒ์ฌํฉ๋๋ค." | 
|  | 39 | +            echo "has_maintenance=false" >> $GITHUB_OUTPUT | 
|  | 40 | +          fi | 
|  | 41 | +        env: | 
|  | 42 | +          GH_TOKEN: ${{ steps.app-token.outputs.token }} | 
|  | 43 | + | 
|  | 44 | +      # Week ์ค์  ํ์ธ | 
|  | 45 | +      - name: Check Week setting in project | 
|  | 46 | +        if: ${{ steps.pr-labels.outputs.has_maintenance != 'true' }} | 
|  | 47 | +        run: | | 
|  | 48 | +          echo "๐ Week ์ค์  ๊ฒ์ฌ ์์" | 
|  | 49 | +          pr_number="${{ github.event.pull_request.number }}" | 
|  | 50 | +
 | 
|  | 51 | +          echo "๐ ํ๋ก์ ํธ ์ ๋ณด ์กฐํ ์ค..." | 
|  | 52 | +          project_data=$(gh api graphql -f query=' | 
|  | 53 | +            query { | 
|  | 54 | +              repository(owner: "${{ github.repository_owner }}", name: "${{ github.event.repository.name }}") { | 
|  | 55 | +                pullRequest(number: '$pr_number') { | 
|  | 56 | +                  projectItems(first: 10) { | 
|  | 57 | +                    nodes { | 
|  | 58 | +                      project { | 
|  | 59 | +                        title | 
|  | 60 | +                      } | 
|  | 61 | +                      fieldValues(first: 20) { | 
|  | 62 | +                        nodes { | 
|  | 63 | +                          __typename | 
|  | 64 | +                          ... on ProjectV2ItemFieldIterationValue { | 
|  | 65 | +                            title | 
|  | 66 | +                            field { | 
|  | 67 | +                              ... on ProjectV2FieldCommon { | 
|  | 68 | +                                name | 
|  | 69 | +                              } | 
|  | 70 | +                            } | 
|  | 71 | +                          } | 
|  | 72 | +                        } | 
|  | 73 | +                      } | 
|  | 74 | +                    } | 
|  | 75 | +                  } | 
|  | 76 | +                } | 
|  | 77 | +              } | 
|  | 78 | +            } | 
|  | 79 | +          ' 2>&1) | 
|  | 80 | +
 | 
|  | 81 | +          if [ $? -ne 0 ]; then | 
|  | 82 | +            echo "โ ๏ธ ํ๋ก์ ํธ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค." | 
|  | 83 | +            echo "$project_data" | 
|  | 84 | +            echo "## โ Week ์ค์  ๊ฒ์ฆ ์คํจ" >> $GITHUB_STEP_SUMMARY | 
|  | 85 | +            echo "" >> $GITHUB_STEP_SUMMARY | 
|  | 86 | +            echo "ํ๋ก์ ํธ ์ ๋ณด๋ฅผ ์กฐํํ  ์ ์์ต๋๋ค. PR์ด ํ๋ก์ ํธ์ ์ถ๊ฐ๋์๋์ง ํ์ธํด์ฃผ์ธ์." >> $GITHUB_STEP_SUMMARY | 
|  | 87 | +            echo "" >> $GITHUB_STEP_SUMMARY | 
|  | 88 | +            echo "๐ [๋ต์ ์ ์ถ ๊ฐ์ด๋ ์ฐธ๊ณ ](https://github.com/DaleStudy/leetcode-study/wiki/%EB%8B%B5%EC%95%88-%EC%A0%9C%EC%B6%9C-%EA%B0%80%EC%9D%B4%EB%93%9C#pr-%EC%9E%91%EC%84%B1%EB%B2%95)" >> $GITHUB_STEP_SUMMARY | 
|  | 89 | +            exit 1 | 
|  | 90 | +          fi | 
|  | 91 | +
 | 
|  | 92 | +          echo "ํ๋ก์ ํธ ๋ฐ์ดํฐ:" | 
|  | 93 | +          echo "$project_data" | 
|  | 94 | +
 | 
|  | 95 | +          # Week ํ๋ ๊ฐ ์ถ์ถ (Iteration ํ์
์ Week ํ๋) | 
|  | 96 | +          week_value=$(echo "$project_data" | jq -r ' | 
|  | 97 | +            .data.repository.pullRequest.projectItems.nodes[].fieldValues.nodes[] | | 
|  | 98 | +            select(.__typename == "ProjectV2ItemFieldIterationValue") | | 
|  | 99 | +            select(.field.name == "Week") | | 
|  | 100 | +            .title | 
|  | 101 | +          ' 2>/dev/null | head -n 1) | 
|  | 102 | +
 | 
|  | 103 | +          echo "์ถ์ถ๋ Week ๊ฐ: '$week_value'" | 
|  | 104 | +
 | 
|  | 105 | +          if [ -z "$week_value" ] || [ "$week_value" = "null" ]; then | 
|  | 106 | +            echo "## โ Week ์ค์  ๊ฒ์ฆ ์คํจ" >> $GITHUB_STEP_SUMMARY | 
|  | 107 | +            echo "" >> $GITHUB_STEP_SUMMARY | 
|  | 108 | +            echo "โ ๏ธ **PR์ Week ์ค์ ์ด ๋๋ฝ๋์์ต๋๋ค!**" >> $GITHUB_STEP_SUMMARY | 
|  | 109 | +            echo "" >> $GITHUB_STEP_SUMMARY | 
|  | 110 | +            echo "### ์ค์  ๋ฐฉ๋ฒ" >> $GITHUB_STEP_SUMMARY | 
|  | 111 | +            echo "1. PR ์ฐ์ธก์ \`Projects\` ์น์
์์ \`๋ฆฌํธ์ฝ๋ ์คํฐ๋\` ์ ๋๋กญ๋ค์ด(โผ) ํด๋ฆญ" >> $GITHUB_STEP_SUMMARY | 
|  | 112 | +            echo "2. ํ์ฌ ์ฃผ์ฐจ๋ฅผ ์ ํํด์ฃผ์ธ์ (์: \`Week 14(current)\` ๋๋ \`Week 14\`)" >> $GITHUB_STEP_SUMMARY | 
|  | 113 | +            echo "" >> $GITHUB_STEP_SUMMARY | 
|  | 114 | +            echo "๐ [์์ธํ ๊ฐ์ด๋ ๋ณด๊ธฐ](https://github.com/DaleStudy/leetcode-study/wiki/%EB%8B%B5%EC%95%88-%EC%A0%9C%EC%B6%9C-%EA%B0%80%EC%9D%B4%EB%93%9C#pr-%EC%9E%91%EC%84%B1%EB%B2%95)" >> $GITHUB_STEP_SUMMARY | 
|  | 115 | +            exit 1 | 
|  | 116 | +          fi | 
|  | 117 | +
 | 
|  | 118 | +          echo "## โ
 Week ์ค์  ๊ฒ์ฆ ์ฑ๊ณต" >> $GITHUB_STEP_SUMMARY | 
|  | 119 | +          echo "" >> $GITHUB_STEP_SUMMARY | 
|  | 120 | +          echo "Week ์ค์ : **$week_value**" >> $GITHUB_STEP_SUMMARY | 
|  | 121 | +          echo "โ
 Week ์ค์ ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๋์ด ์์ต๋๋ค!" | 
|  | 122 | +        env: | 
|  | 123 | +          GH_TOKEN: ${{ steps.app-token.outputs.token }} | 
0 commit comments