Skip to content

Management πŸ”§

Management πŸ”§ #1

Workflow file for this run

name: Management πŸ”§
on:
workflow_dispatch:
inputs:
action:
description: "Action to perform"
required: true
type: choice
default: "approve-prs"
options:
- approve-prs
- merge-prs
exclude_prs:
description: 'PR numbers to exclude (comma-separated, e.g., "1972,1973")'
required: false
type: string
default: ""
jobs:
approve-prs:
name: Approve Open PRs πŸ‘
runs-on: ubuntu-latest
if: ${{ inputs.action == 'approve-prs' }}
permissions:
contents: read
steps:
- name: Approve PRs via GitHub App
id: approve
run: |
echo "πŸ‘ GitHub App을 톡해 λͺ¨λ“  Open PR 승인 쀑..."
# Parse exclude_prs input into JSON array
exclude_input="${{ inputs.exclude_prs }}"
if [ -z "$exclude_input" ]; then
excludes="[]"
else
# Convert "1972,1973" to [1972,1973]
excludes="[$(echo "$exclude_input" | sed 's/,/, /g')]"
fi
echo "μ œμ™Έν•  PR: $excludes"
response=$(curl -s -X POST "https://github.dalestudy.com/approve-prs" \
-H "Content-Type: application/json" \
-d "{\"repo_name\": \"${{ github.event.repository.name }}\", \"excludes\": $excludes}")
echo "response=$response" >> $GITHUB_OUTPUT
echo "$response" | jq '.'
- name: Summary
run: |
response='${{ steps.approve.outputs.response }}'
success=$(echo "$response" | jq -r '.success // false')
total=$(echo "$response" | jq -r '.total_open_prs // 0')
processed=$(echo "$response" | jq -r '.processed // 0')
approved=$(echo "$response" | jq -r '.approved // 0')
skipped=$(echo "$response" | jq -r '.skipped // 0')
echo "## πŸ‘ PR 승인 μ™„λ£Œ" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
if [ "$success" = "true" ]; then
echo "βœ… **μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€**" >> $GITHUB_STEP_SUMMARY
else
echo "❌ **였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€**" >> $GITHUB_STEP_SUMMARY
fi
echo "" >> $GITHUB_STEP_SUMMARY
echo "- πŸ“‹ 전체 Open PR: **$total**개" >> $GITHUB_STEP_SUMMARY
echo "- πŸ” κ²€μ‚¬ν•œ PR: **$processed**개" >> $GITHUB_STEP_SUMMARY
echo "- βœ… μŠΉμΈν•œ PR: **$approved**개" >> $GITHUB_STEP_SUMMARY
echo "- ⏭️ κ±΄λ„ˆλ›΄ PR: **$skipped**개" >> $GITHUB_STEP_SUMMARY
# Show detailed results if available
results=$(echo "$response" | jq -r '.results // []')
if [ "$results" != "[]" ]; then
echo "" >> $GITHUB_STEP_SUMMARY
echo "### πŸ“ 상세 κ²°κ³Ό" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "$response" | jq -r '.results[] | "- PR #\(.pr_number): \(.status) \(if .reason then "(\(.reason))" else "" end)"' >> $GITHUB_STEP_SUMMARY
fi
merge-prs:
name: Merge Open PRs πŸš€
runs-on: ubuntu-latest
if: ${{ inputs.action == 'merge-prs' }}
permissions:
contents: read
steps:
- name: Merge PRs via GitHub App
id: merge
run: |
echo "πŸš€ GitHub App을 톡해 λͺ¨λ“  승인된 PR λ¨Έμ§€ 쀑..."
# Parse exclude_prs input into JSON array
exclude_input="${{ inputs.exclude_prs }}"
if [ -z "$exclude_input" ]; then
excludes="[]"
else
# Convert "1972,1973" to [1972,1973]
excludes="[$(echo "$exclude_input" | sed 's/,/, /g')]"
fi
merge_method="merge"
echo "λ¨Έμ§€ 방식: $merge_method"
echo "μ œμ™Έν•  PR: $excludes"
response=$(curl -s -X POST "https://github.dalestudy.com/merge-prs" \
-H "Content-Type: application/json" \
-d "{\"repo_name\": \"${{ github.event.repository.name }}\", \"merge_method\": \"$merge_method\", \"excludes\": $excludes}")
echo "response=$response" >> $GITHUB_OUTPUT
echo "$response" | jq '.'
- name: Summary
run: |
response='${{ steps.merge.outputs.response }}'
success=$(echo "$response" | jq -r '.success // false')
total=$(echo "$response" | jq -r '.total_open_prs // 0')
processed=$(echo "$response" | jq -r '.processed // 0')
merged=$(echo "$response" | jq -r '.merged // 0')
skipped=$(echo "$response" | jq -r '.skipped // 0')
merge_method=$(echo "$response" | jq -r '.merge_method // "unknown"')
echo "## πŸš€ PR λ¨Έμ§€ μ™„λ£Œ" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
if [ "$success" = "true" ]; then
echo "βœ… **μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€**" >> $GITHUB_STEP_SUMMARY
else
echo "❌ **였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€**" >> $GITHUB_STEP_SUMMARY
fi
echo "" >> $GITHUB_STEP_SUMMARY
echo "- πŸ”§ λ¨Έμ§€ 방식: **$merge_method**" >> $GITHUB_STEP_SUMMARY
echo "- πŸ“‹ 전체 Open PR: **$total**개" >> $GITHUB_STEP_SUMMARY
echo "- πŸ” κ²€μ‚¬ν•œ PR: **$processed**개" >> $GITHUB_STEP_SUMMARY
echo "- βœ… λ¨Έμ§€ν•œ PR: **$merged**개" >> $GITHUB_STEP_SUMMARY
echo "- ⏭️ κ±΄λ„ˆλ›΄ PR: **$skipped**개" >> $GITHUB_STEP_SUMMARY
# Show detailed results if available
results=$(echo "$response" | jq -r '.results // []')
if [ "$results" != "[]" ]; then
echo "" >> $GITHUB_STEP_SUMMARY
echo "### πŸ“ 상세 κ²°κ³Ό" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "$response" | jq -r '.results[] | "- PR #\(.pr_number): \(.status) \(if .reason then "(\(.reason))" else "" end)"' >> $GITHUB_STEP_SUMMARY
fi