Skip to content

Commit 88d2829

Browse files
committed
Fix version naming issue
1 parent 1218ee7 commit 88d2829

1 file changed

Lines changed: 32 additions & 13 deletions

File tree

.github/workflows/deploy.yml

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,27 +28,38 @@ jobs:
2828
id: ver
2929
shell: bash
3030
run: |
31-
# versionName
32-
if [[ "${GITHUB_REF}" == refs/tags/v* ]]; then
33-
VERSION_NAME="${GITHUB_REF#refs/tags/v}" # v1.4.2 -> 1.4.2
31+
REF="${GITHUB_REF}" # e.g. refs/heads/release/v0.1.0
32+
33+
if [[ "$REF" == refs/heads/release/* ]]; then
34+
# Extract version string after "release/"
35+
VERSION_TAG="${REF#refs/heads/release/}" # v0.1.0
36+
VERSION_NAME="${VERSION_TAG#v}" # 0.1.0
3437
else
38+
# Non-release branches: snapshot
3539
LAST_TAG="$(git describe --tags --abbrev=0 2>/dev/null || echo v0.0.0)"
3640
VERSION_NAME="${LAST_TAG#v}-SNAPSHOT+${GITHUB_SHA::7}"
41+
VERSION_TAG="v${VERSION_NAME%%-*}" # v0.0.0 for reference; won't be used to tag
3742
fi
38-
39-
# A) From SemVer (x.y.z -> x*10000 + y*100 + z)
40-
MAJOR="${VERSION_NAME%%.*}"; rest="${VERSION_NAME#*.}"
41-
MINOR="${rest%%.*}"; PATCH="${rest#*.}"
42-
PATCH="${PATCH%%-*}" # strip -SNAPSHOT if present
43+
44+
# Compute a safe, monotonic versionCode
45+
# Prefer SemVer encoding when VERSION_NAME is x.y.z (not snapshot)
46+
BASE_NAME="${VERSION_NAME%%-*}" # strip -SNAPSHOT if present
47+
IFS='.' read -r MAJOR MINOR PATCH <<< "$BASE_NAME"
48+
4349
if [[ "$MAJOR" =~ ^[0-9]+$ && "$MINOR" =~ ^[0-9]+$ && "$PATCH" =~ ^[0-9]+$ ]]; then
4450
VC=$((10#${MAJOR}*10000 + 10#${MINOR}*100 + 10#${PATCH}))
4551
else
46-
# B) Fallback for snapshots: time-based code (UTC yyyymmddHH)
52+
# Fallback for snapshots or odd formats
4753
VC="$(date -u +%Y%m%d%H)"
4854
fi
49-
50-
echo "version_name=${VERSION_NAME}" >> $GITHUB_OUTPUT
51-
echo "version_code=${VC}" >> $GITHUB_OUTPUT
55+
56+
echo "version_name=$VERSION_NAME" >> "$GITHUB_OUTPUT"
57+
echo "version_code=$VC" >> "$GITHUB_OUTPUT"
58+
echo "version_tag=$VERSION_TAG" >> "$GITHUB_OUTPUT"
59+
60+
echo "Derived VERSION_NAME=$VERSION_NAME"
61+
echo "Derived VERSION_CODE=$VC"
62+
echo "Derived VERSION_TAG=$VERSION_TAG"
5263
5364
- name: Assemble Release Bundle
5465
env:
@@ -72,8 +83,16 @@ jobs:
7283
keyPassword: ${{ secrets.KEY_PASSWORD }}
7384

7485
- name: Tag Release
86+
env:
87+
VERSION_TAG: ${{ steps.ver.outputs.version_tag }}
7588
run: |
76-
version_name=${GITHUB_REF##*/}
89+
# Safety: don't recreate if already exists
90+
if git ls-remote --tags origin | grep -q "refs/tags/${VERSION_TAG}$"; then
91+
echo "Tag ${VERSION_TAG} already exists on remote. Skipping."
92+
exit 0
93+
fi
94+
95+
version_name=${VERSION_TAG}
7796
echo "Tagging release with tag $version_name"
7897
git tag $version_name release/$version_name
7998
git push origin --tags

0 commit comments

Comments
 (0)