chore(release): enhance version parsing to support beta/prerelease suffix

This commit is contained in:
Julian Pawlowski 2025-12-25 22:50:12 +00:00
parent 3157c6f0df
commit 3968dba9d2
2 changed files with 17 additions and 7 deletions

View file

@ -43,13 +43,13 @@ jobs:
echo "✗ Tag v${{ steps.manifest.outputs.version }} does not exist yet" echo "✗ Tag v${{ steps.manifest.outputs.version }} does not exist yet"
fi fi
- name: Validate version format - name: Validate version format (stable or beta)
if: steps.tag_check.outputs.exists == 'false' if: steps.tag_check.outputs.exists == 'false'
run: | run: |
VERSION="${{ steps.manifest.outputs.version }}" VERSION="${{ steps.manifest.outputs.version }}"
if ! echo "$VERSION" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$'; then if ! echo "$VERSION" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+(b[0-9]+)?$'; then
echo "❌ Invalid version format: $VERSION" echo "❌ Invalid version format: $VERSION"
echo "Expected format: X.Y.Z (e.g., 1.0.0)" echo "Expected format: X.Y.Z or X.Y.ZbN (e.g., 1.0.0, 0.25.0b0)"
exit 1 exit 1
fi fi
echo "✓ Version format valid: $VERSION" echo "✓ Version format valid: $VERSION"

View file

@ -135,10 +135,20 @@ jobs:
FEAT=$(echo "$COMMITS" | grep -cE "^feat(\(.+\))?:" || true) FEAT=$(echo "$COMMITS" | grep -cE "^feat(\(.+\))?:" || true)
FIX=$(echo "$COMMITS" | grep -cE "^fix(\(.+\))?:" || true) FIX=$(echo "$COMMITS" | grep -cE "^fix(\(.+\))?:" || true)
# Parse versions parse_version() {
local version="$1"
if [[ $version =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)(b[0-9]+)?$ ]]; then
echo "${BASH_REMATCH[1]} ${BASH_REMATCH[2]} ${BASH_REMATCH[3]} ${BASH_REMATCH[4]}"
else
echo "Invalid version format: $version" >&2
exit 1
fi
}
# Parse versions (support beta/prerelease suffix like 0.25.0b0)
PREV_VERSION="${PREV_TAG#v}" PREV_VERSION="${PREV_TAG#v}"
IFS='.' read -r PREV_MAJOR PREV_MINOR PREV_PATCH <<< "$PREV_VERSION" read -r PREV_MAJOR PREV_MINOR PREV_PATCH PREV_PRERELEASE <<< "$(parse_version "$PREV_VERSION")"
IFS='.' read -r MAJOR MINOR PATCH <<< "$TAG_VERSION" read -r MAJOR MINOR PATCH PRERELEASE <<< "$(parse_version "$TAG_VERSION")"
WARNING="" WARNING=""
SUGGESTION="" SUGGESTION=""
@ -245,7 +255,7 @@ jobs:
name: ${{ steps.release_notes.outputs.title }} name: ${{ steps.release_notes.outputs.title }}
body: ${{ steps.release_notes.outputs.notes }} body: ${{ steps.release_notes.outputs.notes }}
draft: false draft: false
prerelease: false prerelease: ${{ contains(github.ref, 'b') }}
generate_release_notes: false # We provide our own generate_release_notes: false # We provide our own
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}