|
| 1 | +name: PR Check π |
| 2 | + |
| 3 | +on: |
| 4 | + schedule: |
| 5 | + # λ§€μΌ μ€μ 10μ, μ€ν 6μ (KST κΈ°μ€, UTCλ‘λ 1μ, 9μ) |
| 6 | + - cron: "0 1,9 * * *" |
| 7 | + workflow_dispatch: |
| 8 | + pull_request: |
| 9 | + |
| 10 | +jobs: |
| 11 | + check-all-prs: |
| 12 | + runs-on: ubuntu-latest |
| 13 | + permissions: |
| 14 | + contents: read |
| 15 | + issues: write # PR λκΈ μμ± κΆν |
| 16 | + pull-requests: write # PR μ 보 μ½κΈ° κΆν |
| 17 | + |
| 18 | + steps: |
| 19 | + - name: Get all open PRs |
| 20 | + id: get-prs |
| 21 | + run: | |
| 22 | + echo "π Open PR λͺ©λ‘ μ‘°ν μ€..." |
| 23 | + prs=$(gh pr list \ |
| 24 | + --repo ${{ github.repository }} \ |
| 25 | + --state open \ |
| 26 | + --json number,labels \ |
| 27 | + --limit 100) |
| 28 | +
|
| 29 | + echo "prs=$prs" >> $GITHUB_OUTPUT |
| 30 | + echo "Open PR μ: $(echo $prs | jq 'length')" |
| 31 | + env: |
| 32 | + GH_TOKEN: ${{ github.token }} |
| 33 | + |
| 34 | + - name: Check Week settings for all PRs |
| 35 | + run: | |
| 36 | + prs='${{ steps.get-prs.outputs.prs }}' |
| 37 | + WORKER_URL="https://dalestudy.daleseo.workers.dev" |
| 38 | + repo_owner="${{ github.repository_owner }}" |
| 39 | + repo_name="${{ github.event.repository.name }}" |
| 40 | +
|
| 41 | + echo "$prs" | jq -c '.[]' | while read -r pr; do |
| 42 | + pr_number=$(echo $pr | jq -r '.number') |
| 43 | + labels=$(echo $pr | jq -r '.labels[].name' | tr '\n' ',') |
| 44 | +
|
| 45 | + # maintenance λΌλ²¨μ΄ μμΌλ©΄ μ€ν΅ |
| 46 | + if echo "$labels" | grep -q "maintenance"; then |
| 47 | + echo "βοΈ PR #$pr_number: maintenance λΌλ²¨ - μ€ν΅" |
| 48 | + continue |
| 49 | + fi |
| 50 | +
|
| 51 | + echo "" |
| 52 | + echo "π PR #$pr_number κ²μ¬ μ€..." |
| 53 | +
|
| 54 | + # GitHub AppμΌλ‘ Week μ€μ νμΈ |
| 55 | + response=$(curl -s -X POST https://dalestudy.daleseo.workers.dev \ |
| 56 | + -H "Content-Type: application/json" \ |
| 57 | + -d "{\"pr_number\": $pr_number, \"repo_owner\": \"$repo_owner\", \"repo_name\": \"$repo_name\"}") |
| 58 | +
|
| 59 | + week=$(echo $response | jq -r '.week') |
| 60 | + project_found=$(echo $response | jq -r '.project_found') |
| 61 | +
|
| 62 | + echo " Week: $week" |
| 63 | + echo " Project found: $project_found" |
| 64 | +
|
| 65 | + # Week μ€μ μ΄ μμΌλ©΄ λκΈ μμ± |
| 66 | + if [ "$week" = "null" ] || [ -z "$week" ]; then |
| 67 | + echo " β οΈ Week μ€μ λλ½ - λκΈ μμ± μλ" |
| 68 | +
|
| 69 | + # GitHub AppμΌλ‘ λκΈ μμ± (jqλ‘ μμ νκ² JSON μμ±) |
| 70 | + comment_body="## β οΈ Week μ€μ μ΄ λλ½λμμ΅λλ€"$'\n\n'"νλ‘μ νΈμμ Weekλ₯Ό μ€μ ν΄μ£ΌμΈμ!"$'\n\n'"### μ€μ λ°©λ²"$'\n'"1. PR μ°μΈ‘μ \`Projects\` μΉμ
μμ \`리νΈμ½λ μ€ν°λ\` μ λλ‘λ€μ΄(βΌ) ν΄λ¦"$'\n'"2. νμ¬ μ£Όμ°¨λ₯Ό μ νν΄μ£ΌμΈμ (μ: \`Week 14(current)\` λλ \`Week 14\`)"$'\n\n'"π [μμΈν κ°μ΄λ 보기](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)"$'\n\n'"---"$'\n'"π€ μ΄ λκΈμ GitHub Appμ ν΅ν΄ μλμΌλ‘ μμ±λμμ΅λλ€." |
| 71 | +
|
| 72 | + comment_response=$(jq -n \ |
| 73 | + --arg pr_num "$pr_number" \ |
| 74 | + --arg owner "$repo_owner" \ |
| 75 | + --arg repo "$repo_name" \ |
| 76 | + --arg body "$comment_body" \ |
| 77 | + '{pr_number: ($pr_num | tonumber), repo_owner: $owner, repo_name: $repo, comment_body: $body}' | \ |
| 78 | + curl -s -X POST "$WORKER_URL/comment" \ |
| 79 | + -H "Content-Type: application/json" \ |
| 80 | + -d @-) |
| 81 | +
|
| 82 | + if echo "$comment_response" | jq -e '.success' > /dev/null 2>&1; then |
| 83 | + echo " β
λκΈ μμ± μλ£" |
| 84 | + else |
| 85 | + echo " β λκΈ μμ± μ€ν¨: $comment_response" |
| 86 | + fi |
| 87 | + else |
| 88 | + echo " β
Week μ€μ μ μ: $week" |
| 89 | + fi |
| 90 | + done |
| 91 | + env: |
| 92 | + GH_TOKEN: ${{ github.token }} |
| 93 | + |
| 94 | + - name: Summary |
| 95 | + run: | |
| 96 | + echo "## π― Week μ€μ μ²΄ν¬ μλ£" >> $GITHUB_STEP_SUMMARY |
| 97 | + echo "" >> $GITHUB_STEP_SUMMARY |
| 98 | + echo "λͺ¨λ Open PRμ Week μ€μ μ νμΈνμ΅λλ€." >> $GITHUB_STEP_SUMMARY |
| 99 | + echo "" >> $GITHUB_STEP_SUMMARY |
| 100 | + echo "- Week μ€μ μ΄ μλ PRμ μλμΌλ‘ λκΈμ μμ±νμ΅λλ€." >> $GITHUB_STEP_SUMMARY |
| 101 | + echo "- λ€μ 체ν¬: $(date -u -d '+1 hour' +'%Y-%m-%d %H:00 UTC')" >> $GITHUB_STEP_SUMMARY |
0 commit comments