From a0d02851940f8a7dec259a4b36f7807597f44c13 Mon Sep 17 00:00:00 2001 From: Kevin Adams Date: Wed, 20 May 2026 16:25:34 -0400 Subject: [PATCH] =?UTF-8?q?ci:=20fix=20versioning=20=E2=80=94=20stable=20u?= =?UTF-8?q?ses=20-1=20revision,=20pre-releases=20use=20~=20prefix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Stable releases now produce X.Y.Z-1 (e.g. 2.3.0-1) so they sort higher than any pre-release build in dpkg. Pre-release builds now use tilde (~beta+sha, ~alpha+sha) which sorts below the base version, ensuring apt upgrade always selects stable over a previously installed beta. Previously -beta+sha sorted higher than X.Y.Z causing apt to refuse upgrades from beta to stable. Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/build.yml | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4d276e2..c424930 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -117,27 +117,31 @@ jobs: perl5/PVE/Storage/LunCmd/FreeNAS.pm 2>/dev/null || echo '0.0.0')" # Only an exact vX.Y.Z tag (no suffix) is a stable release. + # Stable packages use a "-1" Debian revision so they sort higher than + # any pre-release build (e.g. 2.3.0~beta+sha < 2.3.0-1). + # Pre-release builds use "~" (tilde) which sorts BELOW the base version + # in dpkg, ensuring stable always wins on apt upgrade. if [[ "$REF" =~ ^refs/tags/v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - VERSION="${REF#refs/tags/v}" + VERSION="${REF#refs/tags/v}-1" CHANNEL="stable" CLOUDSMITH_REPO="truenas-proxmox" IS_RELEASE="true" - if [[ "$VERSION" != "$BASE_VERSION" ]]; then - echo "::warning::Tag version ($VERSION) does not match \$VERSION in FreeNAS.pm ($BASE_VERSION)" + if [[ "${REF#refs/tags/v}" != "$BASE_VERSION" ]]; then + echo "::warning::Tag version (${REF#refs/tags/v}) does not match \$VERSION in FreeNAS.pm ($BASE_VERSION)" fi elif [[ "$REF" == refs/heads/master ]]; then - VERSION="${BASE_VERSION}-beta+${SHORT_SHA}" + VERSION="${BASE_VERSION}~beta+${SHORT_SHA}" CHANNEL="testing" CLOUDSMITH_REPO="truenas-proxmox-testing" elif [[ "$REF" == refs/heads/feature_* ]]; then - VERSION="${BASE_VERSION}-alpha+${SHORT_SHA}" + VERSION="${BASE_VERSION}~alpha+${SHORT_SHA}" CHANNEL="development" CLOUDSMITH_REPO="truenas-proxmox-snapshots" else - VERSION="${BASE_VERSION}-dev+${SHORT_SHA}" + VERSION="${BASE_VERSION}~dev+${SHORT_SHA}" CHANNEL="none" CLOUDSMITH_REPO="" fi