name: PR
on:
pull_request:
types: [opened, synchronize, reopened, labeled, unlabeled]
permissions:
pull-requests: read
jobs:
check-pr-labels:
runs-on: ubuntu-latest
steps:
- name: Check PR has required label
run: |
LABELS=$(gh pr view ${{ github.event.pull_request.number }} --repo ${{ github.repository }} --json labels --jq '.labels[].name')
REQUIRED_LABELS=("bug" "feature" "docs" "chore")
HAS_LABEL=false
for label in "${REQUIRED_LABELS[@]}"; do
if echo "$LABELS" | grep -q "^${label}$"; then
HAS_LABEL=true
echo "✅ PR has required label: $label"
break
fi
done
if [ "$HAS_LABEL" = false ]; then
echo "❌ PR must have one of the following labels: ${REQUIRED_LABELS[*]}"
echo "A maintainer will assign it"
exit 1
fi
env:
GH_TOKEN: ${{ github.token }}