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"