Skip to content

Commit

Permalink
Add pr-verifier-workflow
Browse files Browse the repository at this point in the history
Signed-off-by: Huy Mai <[email protected]>
  • Loading branch information
mquhuy committed Sep 19, 2024
1 parent a4b3614 commit bd84b35
Showing 1 changed file with 54 additions and 0 deletions.
54 changes: 54 additions & 0 deletions .github/workflows/pr-verifier.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Check PR Title
permissions: {}

on:
pull_request:
types: [opened, edited, synchronize, reopened]
workflow_call

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

0 comments on commit bd84b35

Please sign in to comment.