Merge branch 'develop' into feature/gradient-border
Version Bump / check-bump-label (pull_request) Skipped
Version Bump / apply-version-bump (pull_request) Failing after 23s

This commit is contained in:
2026-07-29 21:26:44 +02:00
+91
View File
@@ -0,0 +1,91 @@
name: Version Bump
on:
pull_request:
branches: [develop]
types: [opened, synchronize, reopened, labeled, unlabeled, closed]
permissions:
contents: write
jobs:
# Register this job's name as a required status check on develop's branch
# protection - that's what actually blocks the merge button.
check-bump-label:
if: github.event.action != 'closed'
runs-on: ubuntu-latest
steps:
- name: Require a bump/major, bump/minor, bump/patch, or bump/skip label
env:
LABELS: ${{ toJson(github.event.pull_request.labels.*.name) }}
run: |
echo "$LABELS" | grep -qE '"bump/(major|minor|patch|skip)"' || {
echo "::error::PR into develop must carry one of bump/major, bump/minor, bump/patch, bump/skip"
exit 1
}
# Runs once, after the merge has already happened, to commit the actual
# version bump onto develop.
apply-version-bump:
if: github.event.pull_request.merged == true
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: develop
fetch-depth: 0
- name: Determine bump level from PR labels
id: level
env:
LABELS: ${{ toJson(github.event.pull_request.labels.*.name) }}
run: |
for lvl in major minor patch skip; do
if echo "$LABELS" | grep -q "\"bump/$lvl\""; then
echo "level=$lvl" >> "$GITHUB_OUTPUT"
exit 0
fi
done
echo "::error::merged PR into develop has no bump/major, bump/minor, bump/patch, or bump/skip label"
exit 1
- name: Bump CMakeLists.txt and flake.nix
if: steps.level.outputs.level != 'skip'
env:
LEVEL: ${{ steps.level.outputs.level }}
run: |
set -euo pipefail
CURRENT=$(grep -oP '(?<=VERSION )[0-9]+(\.[0-9]+){1,2}' CMakeLists.txt | head -1)
# Pad to 3 components so a pre-existing 2-component version (e.g.
# "0.1") still splits into MAJOR/MINOR/PATCH correctly.
IFS='.' read -r MAJOR MINOR PATCH <<< "${CURRENT}.0.0"
case "$LEVEL" in
major) MAJOR=$((MAJOR + 1)); MINOR=0; PATCH=0 ;;
minor) MINOR=$((MINOR + 1)); PATCH=0 ;;
patch) PATCH=$((PATCH + 1)) ;;
esac
NEW="$MAJOR.$MINOR.$PATCH"
sed -i "s/VERSION ${CURRENT}/VERSION ${NEW}/" CMakeLists.txt
sed -i "s/version = \"${CURRENT}\"/version = \"${NEW}\"/" flake.nix
echo "CURRENT_VERSION=${CURRENT}" >> "$GITHUB_ENV"
echo "NEW_VERSION=${NEW}" >> "$GITHUB_ENV"
- name: Commit and push
if: steps.level.outputs.level != 'skip'
run: |
set -euo pipefail
if [ "$CURRENT_VERSION" = "$NEW_VERSION" ]; then
echo "::error::version did not change (${CURRENT_VERSION} -> ${NEW_VERSION})"
exit 1
fi
git config user.name "gitea-actions"
git config user.email "actions@noreply.localhost"
git add CMakeLists.txt flake.nix
git commit -m "Bump version to ${NEW_VERSION}"
git push origin HEAD:develop