1
0
mirror of https://github.com/django/django.git synced 2025-07-22 18:49:25 +00:00

[5.2.x] Added GitHub Action to enforce stable branch commit message prefix.

Backport of 10386fac00be55e73279459f00f1959c3ef30a1c from main.
This commit is contained in:
nessita 2025-07-16 08:38:13 -03:00 committed by Natalia
parent 1c2e11c7f4
commit c1883c3b20

View File

@ -0,0 +1,63 @@
name: Check commit prefix
on:
pull_request:
types: [edited, opened, synchronize, reopened, ready_for_review]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
check-commit-prefix:
if: startsWith(github.event.pull_request.base.ref, 'stable/')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Calculate commit prefix
id: vars
run: |
BASE="${{ github.event.pull_request.base.ref }}"
HEAD="${{ github.event.pull_request.head.ref }}"
echo "BASE=$BASE" >> $GITHUB_ENV
echo "HEAD=$HEAD" >> $GITHUB_ENV
VERSION="${BASE#stable/}"
echo "prefix=[$VERSION]" >> $GITHUB_OUTPUT
- name: Check PR title prefix
run: |
TITLE="${{ github.event.pull_request.title }}"
PREFIX="${{ steps.vars.outputs.prefix }}"
if [[ "$TITLE" != "$PREFIX"* ]]; then
echo "❌ PR title must start with the required prefix: $PREFIX"
exit 1
fi
echo "✅ PR title has the required prefix."
- name: Fetch base and head branches
run: |
git fetch origin $BASE
git fetch origin $HEAD
- name: Check commit messages prefix
run: |
PREFIX="${{ steps.vars.outputs.prefix }}"
COMMITS=$(git rev-list origin/${BASE}..origin/${HEAD})
echo "Checking commit messages for required prefix: $PREFIX"
FAIL=0
for SHA in $COMMITS; do
MSG=$(git log -1 --pretty=%s $SHA)
echo "Checking commit $SHA: $MSG"
if [[ "$MSG" != "$PREFIX"* ]]; then
echo "❌ Commit $SHA must start with the required prefix: $PREFIX"
FAIL=1
fi
done
if [[ $FAIL -eq 1 ]]; then
echo "One or more commit messages are missing the required prefix."
exit 1
fi
echo "✅ All commits have the required prefix."