Skip to content

Add PR label action

Add PR label action #8

Workflow file for this run

name: Pull Request Labels
on:
pull_request:
types: [opened, synchronize, reopened, labeled, unlabeled]
jobs:
check-labels:
runs-on: ubuntu-latest
env:
GH_TOKEN: ${{ github.token }}
steps:
- uses: actions/checkout@v4
- name: Check for Pull Request Labels
run: |
REQUIRED_LABELS=("documentation" "bugfix" "chore" "enhancement" "ignore-for-release" "security" "sorbet")
LABELS=$(gh pr view --json labels --jq ".labels[] .name" ${{ github.event.pull_request.number }})
errorMessage=""
if [ -z "$LABELS" ]; then
echo "No labels found on PR"
errorMessage="No labels found on PR"
else
for label in $LABELS; do
if [[ "${REQUIRED_LABELS[@]}" =~ "${label}" ]]; then
echo "Matched label $label"
exit 0
fi
done
echo "No matching required labels found on PR"
errorMessage="No matching label found"
fi
if [ -n "$errorMessage" ]; then
echo "### Pull Request Labels" > comment.md
echo "" >> comment.md
echo "Error: `$errorMessage`" >> comment.md
echo "" >> comment.md
echo "Please add one of the following labels to your pull request:" >> comment.md
echo "`${REQUIRED_LABELS[@]}`" >> comment.md
echo "" >> comment.md
gh pr comment ${{ github.event.pull_request.number }} --body-file comment.md --edit-last
exit 1
else
echo "All required labels found on PR"
commentId=$(gh pr view -c --json comments --jq ".comments | reverse[] | select(.viewerDidAuthor == true) | .id" ${{ github.event.pull_request.number }})
if [ -n "$commentId" ]; then
echo "Deleting previous comment"
gh api -X DELETE /repos/${{ github.repository }}/issues/comments/$commentId
fi
fi
shell: bash