From 31b9e61adb212a042f1f34674bffb749dc08b60c Mon Sep 17 00:00:00 2001 From: ArthurErlich Date: Mon, 21 Sep 2026 18:37:10 +0200 Subject: [PATCH] ci: add pre-merge version-and-changelog check for PRs into main --- .gitea/workflows/pr-version-check.yml | 40 +++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .gitea/workflows/pr-version-check.yml diff --git a/.gitea/workflows/pr-version-check.yml b/.gitea/workflows/pr-version-check.yml new file mode 100644 index 0000000..3f5a2d8 --- /dev/null +++ b/.gitea/workflows/pr-version-check.yml @@ -0,0 +1,40 @@ +name: version-changelog + +on: + pull_request: + branches: [main] + +jobs: + version-changelog: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Check version bump and changelog entry + run: | + set -e + PR_VERSION=$(grep -m1 '"version"' composer.json | sed -E 's/.*"version"[[:space:]]*:[[:space:]]*"([^"]+)".*/\1/') + MAIN_VERSION=$(git show origin/main:composer.json | grep -m1 '"version"' | sed -E 's/.*"version"[[:space:]]*:[[:space:]]*"([^"]+)".*/\1/') + + echo "main version: $MAIN_VERSION" + echo "PR version: $PR_VERSION" + + if [ "$MAIN_VERSION" = "$PR_VERSION" ]; then + echo "::error::composer.json version ($PR_VERSION) was not bumped from main ($MAIN_VERSION)" + exit 1 + fi + + HIGHEST=$(printf '%s\n%s\n' "$MAIN_VERSION" "$PR_VERSION" | sort -V | tail -n1) + if [ "$HIGHEST" != "$PR_VERSION" ]; then + echo "::error::composer.json version ($PR_VERSION) is not greater than main's ($MAIN_VERSION)" + exit 1 + fi + + if ! grep -qF "## [$PR_VERSION]" CHANGELOG.md; then + echo "::error::CHANGELOG.md is missing a '## [$PR_VERSION]' heading" + exit 1 + fi + + echo "OK: version bumped to $PR_VERSION and documented in CHANGELOG.md"