diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index 45d6a60..cf77b88 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -54,27 +54,33 @@ jobs: run: | set -euo pipefail if [ "${GITHUB_EVENT_NAME}" = "push" ]; then - # Tag push from local: tag already exists, just verify + extract version + # Tag pushed locally: tag already exists, just extract version tag="${GITHUB_REF_NAME}" ver="${tag#v}" - if ! printf '%s' "$ver" | grep -Eq '^[0-9]+\.[0-9]+\.[0-9]+([-.][0-9A-Za-z.-]+)?$'; then - echo "::error::'$ver' is not a semver version (expected e.g. 0.4.0)" - exit 1 - fi else - # Manual dispatch: validate input, stamp, verify tag doesn't exist yet + # Manual dispatch from Gitea UI: use the input version ver="${VERSION#v}" + tag="v${ver}" if ! printf '%s' "$ver" | grep -Eq '^[0-9]+\.[0-9]+\.[0-9]+([-.][0-9A-Za-z.-]+)?$'; then echo "::error::'$ver' is not a semver version (expected e.g. 0.4.0)" exit 1 fi - tag="v$ver" - if git rev-parse -q --verify "refs/tags/$tag" >/dev/null \ - || git ls-remote --exit-code --tags origin "$tag" >/dev/null 2>&1; then - echo "::error::tag $tag already exists" - exit 1 + # If the tag already exists locally, skip version stamping. + # This covers the case where the tag was created outside this + # workflow — we just need the version number for downstream jobs. + if git rev-parse -q --verify "refs/tags/$tag" >/dev/null && \ + ! git ls-remote --exit-code --tags origin "$tag" >/dev/null 2>&1; then + echo "Tag already exists locally — skipping version stamp." + else + echo "Stamping version $ver …" + bash scripts/set-version.sh "$ver" fi - bash scripts/set-version.sh "$ver" + fi + # Verify the Cargo.toml version matches so downstream jobs are safe. + manifest_ver=$(grep '^version' Cargo.toml | head -1 | sed 's/version = "//;s/"//') + if [ "$ver" != "$manifest_ver" ]; then + echo "::error::version mismatch: step says $ver but Cargo.toml says $manifest_ver" + exit 1 fi echo "version=$ver" >> "$GITHUB_OUTPUT" echo "tag=$tag" >> "$GITHUB_OUTPUT"