Project validation #9
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Check Project Week ๐๏ธ | |
| on: | |
| pull_request: | |
| types: [opened, reopened, synchronize, edited, labeled, unlabeled] | |
| workflow_dispatch: # ์๋ ์คํ | |
| inputs: | |
| pr_number: | |
| description: 'PR ๋ฒํธ' | |
| required: true | |
| type: number | |
| issue_comment: # PR ๋๊ธ๋ก ์ฌ์คํ | |
| types: [created] | |
| jobs: | |
| check-project: | |
| runs-on: ubuntu-latest | |
| # issue_comment ์ด๋ฒคํธ๋ /check-week ๋ช ๋ น์ด๊ฐ ์์ ๋๋ง ์คํ | |
| if: | | |
| github.event_name != 'issue_comment' || | |
| (github.event.issue.pull_request && contains(github.event.comment.body, '/check-week')) | |
| permissions: | |
| contents: read | |
| pull-requests: read | |
| steps: | |
| # PR ๋ฒํธ ๊ฒฐ์ | |
| - name: Determine PR number | |
| id: pr-info | |
| run: | | |
| if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then | |
| pr_number="${{ inputs.pr_number }}" | |
| elif [ "${{ github.event_name }}" = "issue_comment" ]; then | |
| pr_number="${{ github.event.issue.number }}" | |
| else | |
| pr_number="${{ github.event.pull_request.number }}" | |
| fi | |
| echo "pr_number=$pr_number" >> $GITHUB_OUTPUT | |
| echo "๐ PR ๋ฒํธ: $pr_number" | |
| # PR ๋ผ๋ฒจ ํ์ธ | |
| - name: Get PR labels | |
| id: pr-labels | |
| run: | | |
| pr_number="${{ steps.pr-info.outputs.pr_number }}" | |
| repo="${{ github.repository }}" | |
| echo "๐ PR ๋ผ๋ฒจ ์กฐํ ์ค..." | |
| labels_json=$(gh pr view $pr_number --repo $repo --json labels -q '.labels[].name') | |
| echo "ํ์ธ๋ ๋ผ๋ฒจ: $labels_json" | |
| if [ -n "$labels_json" ]; then | |
| has_maintenance=$(echo $labels_json | grep -q 'maintenance' && echo 'true' || echo 'false') | |
| echo "maintenance ๋ผ๋ฒจ ํฌํจ ์ฌ๋ถ: $has_maintenance" | |
| echo "has_maintenance=$has_maintenance" >> $GITHUB_OUTPUT | |
| else | |
| echo "maintenance ๋ผ๋ฒจ์ด ์๋ PR์ ๋๋ค. Week ์ค์ ์ ๊ฒ์ฌํฉ๋๋ค." | |
| echo "has_maintenance=false" >> $GITHUB_OUTPUT | |
| fi | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| # Week ์ค์ ํ์ธ (Cloudflare Worker ํธ์ถ) | |
| - name: Check Week setting in project | |
| if: ${{ steps.pr-labels.outputs.has_maintenance != 'true' }} | |
| run: | | |
| echo "๐ Week ์ค์ ๊ฒ์ฌ ์์" | |
| pr_number="${{ steps.pr-info.outputs.pr_number }}" | |
| repo_owner="${{ github.repository_owner }}" | |
| repo_name="${{ github.event.repository.name }}" | |
| WORKER_URL="https://dalestudy.daleseo.workers.dev" | |
| echo "๐ Cloudflare Worker๋ฅผ ํตํด ํ๋ก์ ํธ ์ ๋ณด ์กฐํ ์ค..." | |
| response=$(curl -s -X POST "$WORKER_URL" \ | |
| -H "Content-Type: application/json" \ | |
| -d "{\"pr_number\": $pr_number, \"repo_owner\": \"$repo_owner\", \"repo_name\": \"$repo_name\"}") | |
| echo "์๋ต: $response" | |
| # ์๋ฌ ์ฒดํฌ | |
| if echo "$response" | jq -e '.error' > /dev/null; then | |
| error_msg=$(echo "$response" | jq -r '.error') | |
| echo "โ ๏ธ Worker ์๋ฌ: $error_msg" | |
| echo "## โ Week ์ค์ ๊ฒ์ฆ ์คํจ" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "ํ๋ก์ ํธ ์ ๋ณด๋ฅผ ์กฐํํ ์ ์์ต๋๋ค: $error_msg" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| 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 | |
| exit 1 | |
| fi | |
| # Week ๊ฐ ์ถ์ถ | |
| week_value=$(echo "$response" | jq -r '.week') | |
| project_found=$(echo "$response" | jq -r '.project_found') | |
| echo "์ถ์ถ๋ Week ๊ฐ: '$week_value'" | |
| echo "ํ๋ก์ ํธ ๋ฐ๊ฒฌ ์ฌ๋ถ: $project_found" | |
| if [ "$week_value" = "null" ] || [ -z "$week_value" ]; then | |
| echo "## โ Week ์ค์ ๊ฒ์ฆ ์คํจ" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "โ ๏ธ **PR์ Week ์ค์ ์ด ๋๋ฝ๋์์ต๋๋ค!**" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "### ์ค์ ๋ฐฉ๋ฒ" >> $GITHUB_STEP_SUMMARY | |
| echo "1. PR ์ฐ์ธก์ \`Projects\` ์น์ ์์ \`๋ฆฌํธ์ฝ๋ ์คํฐ๋\` ์ ๋๋กญ๋ค์ด(โผ) ํด๋ฆญ" >> $GITHUB_STEP_SUMMARY | |
| echo "2. ํ์ฌ ์ฃผ์ฐจ๋ฅผ ์ ํํด์ฃผ์ธ์ (์: \`Week 14(current)\` ๋๋ \`Week 14\`)" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| 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 | |
| exit 1 | |
| fi | |
| echo "## โ Week ์ค์ ๊ฒ์ฆ ์ฑ๊ณต" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "Week ์ค์ : **$week_value**" >> $GITHUB_STEP_SUMMARY | |
| echo "โ Week ์ค์ ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๋์ด ์์ต๋๋ค!" |