From 211c79f9d065916647477a2f3e970dcad50a621f Mon Sep 17 00:00:00 2001 From: linmeideli <2558527373@qq.com> Date: Fri, 25 Sep 2026 12:46:35 +0800 Subject: [PATCH] fix nuget version numbering to follow CI run number --- .github/workflows/nuget.yml | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/nuget.yml b/.github/workflows/nuget.yml index 68cf238..90fd47f 100644 --- a/.github/workflows/nuget.yml +++ b/.github/workflows/nuget.yml @@ -21,16 +21,22 @@ jobs: with: dotnet-version: 8.0.x - # Version scheme mirrors build.cake: -ci.. - # If that exact version already exists on nuget.org (workflow re-run), - # publishing is skipped by --skip-duplicate. + # Version scheme mirrors build.cake/nightly: -ci.. + # The floor (max already-published ci.N + 1) keeps versions monotonic. - name: Resolve version id: ver run: | set -euo pipefail PROJ=src/Empostor.Api/Empostor.Api.csproj BASE=$(sed -n 's/.*\([^<]*\)<\/VersionPrefix>.*/\1/p' "$PROJ" | head -1) - N=$(( ${{ github.run_number }} + 500 )) + CI_RUN=$(curl -sf -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ + "https://api.github.com/repos/${{ github.repository }}/actions/workflows/ci.yml/runs?per_page=1" \ + | jq -r '.workflow_runs[0].run_number') + N=$(( CI_RUN + 500 )) + MAXN=$(curl -sf "https://api.nuget.org/v3-flatcontainer/empostor.api/index.json" \ + | jq -r '.versions[]' | grep -oE 'ci\.[0-9]+$' | grep -oE '[0-9]+$' | sort -n | tail -1 || true) + MAXN=${MAXN:-0} + if [ "$N" -le "$MAXN" ]; then N=$((MAXN + 1)); fi echo "suffix=ci.${N}" >> "$GITHUB_OUTPUT" echo "version=${BASE}-ci.${N}" >> "$GITHUB_OUTPUT" echo "Publishing version: ${BASE}-ci.${N}"