Skip to content

Add PR label action #17

Add PR label action

Add PR label action #17

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
matched=0
for label in $LABELS; do
if [[ "${REQUIRED_LABELS[@]}" =~ "${label}" ]]; then
matched=1
echo "Matched label $label"
break
fi
done
if [ $matched -eq 0 ]; then
echo "No matching required labels found on PR"
errorMessage="No matching label found"
fi
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 || \
gh pr comment ${{ github.event.pull_request.number }} --body-file comment.md
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: /repos/${{ github.repository }}/issues/comments/$commentId"
gh api graphql -f query="mutation {deleteIssueComment(input: { id: \"$commentId\" }) { clientMutationId }}" || true
fi
fi
shell: bash