|
| 1 | +name: Check Project Week ๐๏ธ |
| 2 | + |
| 3 | +on: |
| 4 | + pull_request: |
| 5 | + types: [opened, reopened, synchronize, edited, labeled, unlabeled] |
| 6 | + workflow_dispatch: # ์๋ ์คํ |
| 7 | + inputs: |
| 8 | + pr_number: |
| 9 | + description: 'PR ๋ฒํธ' |
| 10 | + required: true |
| 11 | + type: number |
| 12 | + issue_comment: # PR ๋๊ธ๋ก ์ฌ์คํ |
| 13 | + types: [created] |
| 14 | + |
| 15 | +jobs: |
| 16 | + check-project: |
| 17 | + runs-on: ubuntu-latest |
| 18 | + # issue_comment ์ด๋ฒคํธ๋ /check-week ๋ช
๋ น์ด๊ฐ ์์ ๋๋ง ์คํ |
| 19 | + if: | |
| 20 | + github.event_name != 'issue_comment' || |
| 21 | + (github.event.issue.pull_request && contains(github.event.comment.body, '/check-week')) |
| 22 | + permissions: |
| 23 | + contents: read |
| 24 | + pull-requests: read |
| 25 | + |
| 26 | + steps: |
| 27 | + # PR ๋ฒํธ ๊ฒฐ์ |
| 28 | + - name: Determine PR number |
| 29 | + id: pr-info |
| 30 | + run: | |
| 31 | + if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then |
| 32 | + pr_number="${{ inputs.pr_number }}" |
| 33 | + elif [ "${{ github.event_name }}" = "issue_comment" ]; then |
| 34 | + pr_number="${{ github.event.issue.number }}" |
| 35 | + else |
| 36 | + pr_number="${{ github.event.pull_request.number }}" |
| 37 | + fi |
| 38 | + echo "pr_number=$pr_number" >> $GITHUB_OUTPUT |
| 39 | + echo "๐ PR ๋ฒํธ: $pr_number" |
| 40 | +
|
| 41 | + # PR ๋ผ๋ฒจ ํ์ธ |
| 42 | + - name: Get PR labels |
| 43 | + id: pr-labels |
| 44 | + run: | |
| 45 | + pr_number="${{ steps.pr-info.outputs.pr_number }}" |
| 46 | + repo="${{ github.repository }}" |
| 47 | +
|
| 48 | + echo "๐ PR ๋ผ๋ฒจ ์กฐํ ์ค..." |
| 49 | + labels_json=$(gh pr view $pr_number --repo $repo --json labels -q '.labels[].name') |
| 50 | + echo "ํ์ธ๋ ๋ผ๋ฒจ: $labels_json" |
| 51 | +
|
| 52 | + if [ -n "$labels_json" ]; then |
| 53 | + has_maintenance=$(echo $labels_json | grep -q 'maintenance' && echo 'true' || echo 'false') |
| 54 | + echo "maintenance ๋ผ๋ฒจ ํฌํจ ์ฌ๋ถ: $has_maintenance" |
| 55 | + echo "has_maintenance=$has_maintenance" >> $GITHUB_OUTPUT |
| 56 | + else |
| 57 | + echo "maintenance ๋ผ๋ฒจ์ด ์๋ PR์
๋๋ค. Week ์ค์ ์ ๊ฒ์ฌํฉ๋๋ค." |
| 58 | + echo "has_maintenance=false" >> $GITHUB_OUTPUT |
| 59 | + fi |
| 60 | + env: |
| 61 | + GH_TOKEN: ${{ github.token }} |
| 62 | + |
| 63 | + # Week ์ค์ ํ์ธ (Cloudflare Worker ํธ์ถ) |
| 64 | + - name: Check Week setting in project |
| 65 | + if: ${{ steps.pr-labels.outputs.has_maintenance != 'true' }} |
| 66 | + run: | |
| 67 | + echo "๐ Week ์ค์ ๊ฒ์ฌ ์์" |
| 68 | + pr_number="${{ steps.pr-info.outputs.pr_number }}" |
| 69 | + repo_owner="${{ github.repository_owner }}" |
| 70 | + repo_name="${{ github.event.repository.name }}" |
| 71 | +
|
| 72 | + WORKER_URL="https://dalestudy.daleseo.workers.dev" |
| 73 | +
|
| 74 | + echo "๐ Cloudflare Worker๋ฅผ ํตํด ํ๋ก์ ํธ ์ ๋ณด ์กฐํ ์ค..." |
| 75 | + response=$(curl -s -X POST "$WORKER_URL" \ |
| 76 | + -H "Content-Type: application/json" \ |
| 77 | + -d "{\"pr_number\": $pr_number, \"repo_owner\": \"$repo_owner\", \"repo_name\": \"$repo_name\"}") |
| 78 | +
|
| 79 | + echo "์๋ต: $response" |
| 80 | +
|
| 81 | + # ์๋ฌ ์ฒดํฌ |
| 82 | + if echo "$response" | jq -e '.error' > /dev/null; then |
| 83 | + error_msg=$(echo "$response" | jq -r '.error') |
| 84 | + echo "โ ๏ธ Worker ์๋ฌ: $error_msg" |
| 85 | + echo "## โ Week ์ค์ ๊ฒ์ฆ ์คํจ" >> $GITHUB_STEP_SUMMARY |
| 86 | + echo "" >> $GITHUB_STEP_SUMMARY |
| 87 | + echo "ํ๋ก์ ํธ ์ ๋ณด๋ฅผ ์กฐํํ ์ ์์ต๋๋ค: $error_msg" >> $GITHUB_STEP_SUMMARY |
| 88 | + echo "" >> $GITHUB_STEP_SUMMARY |
| 89 | + 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 |
| 90 | + exit 1 |
| 91 | + fi |
| 92 | +
|
| 93 | + # Week ๊ฐ ์ถ์ถ |
| 94 | + week_value=$(echo "$response" | jq -r '.week') |
| 95 | + project_found=$(echo "$response" | jq -r '.project_found') |
| 96 | +
|
| 97 | + echo "์ถ์ถ๋ Week ๊ฐ: '$week_value'" |
| 98 | + echo "ํ๋ก์ ํธ ๋ฐ๊ฒฌ ์ฌ๋ถ: $project_found" |
| 99 | +
|
| 100 | + if [ "$week_value" = "null" ] || [ -z "$week_value" ]; then |
| 101 | + echo "## โ Week ์ค์ ๊ฒ์ฆ ์คํจ" >> $GITHUB_STEP_SUMMARY |
| 102 | + echo "" >> $GITHUB_STEP_SUMMARY |
| 103 | + echo "โ ๏ธ **PR์ Week ์ค์ ์ด ๋๋ฝ๋์์ต๋๋ค!**" >> $GITHUB_STEP_SUMMARY |
| 104 | + echo "" >> $GITHUB_STEP_SUMMARY |
| 105 | + echo "### ์ค์ ๋ฐฉ๋ฒ" >> $GITHUB_STEP_SUMMARY |
| 106 | + echo "1. PR ์ฐ์ธก์ \`Projects\` ์น์
์์ \`๋ฆฌํธ์ฝ๋ ์คํฐ๋\` ์ ๋๋กญ๋ค์ด(โผ) ํด๋ฆญ" >> $GITHUB_STEP_SUMMARY |
| 107 | + echo "2. ํ์ฌ ์ฃผ์ฐจ๋ฅผ ์ ํํด์ฃผ์ธ์ (์: \`Week 14(current)\` ๋๋ \`Week 14\`)" >> $GITHUB_STEP_SUMMARY |
| 108 | + echo "" >> $GITHUB_STEP_SUMMARY |
| 109 | + 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 |
| 110 | + exit 1 |
| 111 | + fi |
| 112 | +
|
| 113 | + echo "## โ
Week ์ค์ ๊ฒ์ฆ ์ฑ๊ณต" >> $GITHUB_STEP_SUMMARY |
| 114 | + echo "" >> $GITHUB_STEP_SUMMARY |
| 115 | + echo "Week ์ค์ : **$week_value**" >> $GITHUB_STEP_SUMMARY |
| 116 | + echo "โ
Week ์ค์ ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๋์ด ์์ต๋๋ค!" |
0 commit comments