Skip to content

[WIP] Add pr-verifier-workflow #1

[WIP] Add pr-verifier-workflow

[WIP] Add pr-verifier-workflow #1

Workflow file for this run

name: Check PR Title
permissions: {}
on:
pull_request:
types: [opened, edited, synchronize, reopened]
jobs:
check-title:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v2
- name: Validate PR Title
run: |
WIP_REGEX="^\W?WIP\W"
TAG_REGEX="^\[[[:alnum:]\._-]*\]"
PR_TITLE="${{ github.event.pull_request.title }}"
# Trim WIP and tags from title
trimmed_title=$(echo "$PR_TITLE" | sed -E "s/$WIP_REGEX//" | sed -E "s/$TAG_REGEX//" | xargs)
# Normalize common emojis in text form to actual emojis
trimmed_title=$(echo "$trimmed_title" | sed -E "s/:warning:/⚠/g")
trimmed_title=$(echo "$trimmed_title" | sed -E "s/:sparkles:/✨/g")
trimmed_title=$(echo "$trimmed_title" | sed -E "s/:bug:/🐛/g")
trimmed_title=$(echo "$trimmed_title" | sed -E "s/:book:/📖/g")
trimmed_title=$(echo "$trimmed_title" | sed -E "s/:rocket:/🚀/g")
trimmed_title=$(echo "$trimmed_title" | sed -E "s/:seedling:/🌱/g")
# Check PR type prefix
if [[ "$trimmed_title" =~ ^(⚠|✨|🐛|📖|🚀|🌱) ]]; then
echo "PR title is valid: $trimmed_title"
else
echo "Error: No matching PR type indicator found in title."
echo "You need to have one of these as the prefix of your PR title:"
echo "- Breaking change: ⚠ (:warning:)"
echo "- Non-breaking feature: ✨ (:sparkles:)"
echo "- Patch fix: 🐛 (:bug:)"
echo "- Docs: 📖 (:book:)"
echo "- Release: 🚀 (:rocket:)"
echo "- Infra/Tests/Other: 🌱 (:seedling:)"
exit 1
fi
# Check that PR title does not contain Issue or PR number
if [[ "$trimmed_title" =~ \#[0-9]+ ]]; then
echo "Error: PR title should not contain issue or PR number."
echo "Issue numbers belong in the PR body as either \"Fixes #XYZ\" (if it closes the issue or PR), or something like \"Related to #XYZ\" (if it's just related)."
exit 1
fi