From 7bfe1507dd54df2ef79d7d0fc3e5ea64f192ae7c Mon Sep 17 00:00:00 2001 From: miwr Date: Mon, 14 Apr 2025 10:33:03 +0200 Subject: [PATCH] update-version.sh --- .forgejo/workflows/deploy.yaml | 2 ++ update-version.sh | 41 ++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100755 update-version.sh diff --git a/.forgejo/workflows/deploy.yaml b/.forgejo/workflows/deploy.yaml index 620e341..86c4c0a 100644 --- a/.forgejo/workflows/deploy.yaml +++ b/.forgejo/workflows/deploy.yaml @@ -36,6 +36,8 @@ jobs: driver-opts: network=host - name: Checkout code uses: actions/checkout@v4 + - name: Update version + run: update-version.sh - name: Build and push uses: docker/build-push-action@v6 with: diff --git a/update-version.sh b/update-version.sh new file mode 100755 index 0000000..3141fa7 --- /dev/null +++ b/update-version.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +set -e + +# Extract version using grep/sed as fallback (works even with -SNAPSHOT) +current_version=$(xmllint --xpath "/*[local-name()='project']/*[local-name()='version']/text()" pom.xml) + +if [[ -z "$current_version" ]]; then + echo "❌ Failed to extract version from pom.xml" + exit 1 +fi + +# Strip "-SNAPSHOT" if present +base_version="${current_version%-SNAPSHOT}" + +# Split into major.minor.patch +IFS='.' read -r major minor patch <<< "$base_version" + +# Handle missing patch (e.g. 1.0) +patch=${patch:-0} + +# Increment minor, reset patch +minor=$((minor + 1)) +patch=0 + +# Preserve -SNAPSHOT if it was present +if [[ "$current_version" == *-SNAPSHOT ]]; then + new_version="${major}.${minor}.${patch}-SNAPSHOT" +else + new_version="${major}.${minor}.${patch}" +fi + +# Apply it with Maven +echo "🔧 Updating version: $current_version → $new_version" +mvn versions:set -DnewVersion="$new_version" +mvn versions:commit + +# Remove unnecessary backup file +rm -f pom.xml.versionsBackup + +echo "✅ Done!"