From 4d2c23221ac0fc5b45df3dbb22590a1d6e1b9ebc Mon Sep 17 00:00:00 2001 From: kjh2064 Date: Sun, 12 Jul 2026 01:23:04 +0900 Subject: [PATCH] fix: Count today's releases via Gitea API instead of local git tags User asked why every release tonight had the same "sequence number" (quant_20260711.1.*) despite creating three of them. Confirmed via API: tags b7591fb, 6ab270f, and e49922e all exist for 2026-07-11, all claiming to be deploy #1. Root cause: `actions/checkout@v4` (no fetch-depth/fetch-tags options) does a shallow, tags-less clone by default. Each prepare-release.yml run happens in a brand-new container, so `git tag -l "quant_${TODAY}.*"` always sees zero local tags regardless of how many releases actually exist -- DEPLOY_COUNT was permanently stuck at 0+1=1. Fix: query GET /repos/{repo}/tags via the Gitea API (same token/curl pattern already used elsewhere in this workflow) to count today's actual tags, instead of relying on the job's local, incomplete git state. --- .gitea/workflows/prepare-release.yml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/prepare-release.yml b/.gitea/workflows/prepare-release.yml index c4a321c3..6608b0ec 100644 --- a/.gitea/workflows/prepare-release.yml +++ b/.gitea/workflows/prepare-release.yml @@ -31,6 +31,8 @@ jobs: - name: Generate Metadata id: metadata + env: + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} run: | VERSION_INPUT="${{ github.event.inputs.version }}" COMMIT=$(git rev-parse --short HEAD) @@ -39,8 +41,18 @@ jobs: if [ -z "$VERSION_INPUT" ]; then TODAY=$(TZ=UTC date +%Y%m%d) - # Count releases for today - RELEASES_TODAY=$(git tag -l "quant_${TODAY}.*" | wc -l) + # NOTE: Do NOT count today's releases via `git tag -l` here. + # actions/checkout@v4 defaults to a shallow, single-branch + # clone that does not fetch any tags, so every job container + # sees zero local tags regardless of how many releases exist + # -- this is exactly why every release tonight came out as + # "quant_20260711.1.*" (three of them: b7591fb, 6ab270f, + # e49922e, all claiming to be deploy #1). Query the actual + # Gitea Releases API instead, which reflects real state. + RELEASES_TODAY=$(curl -sf --connect-timeout 10 --max-time 30 \ + -H "Authorization: token ${GITEA_TOKEN}" \ + "https://gitea.taxbaik.com/api/v1/repos/${{ github.repository }}/tags?limit=50" \ + | jq -r --arg prefix "quant_${TODAY}." '[.[] | select(.name | startswith($prefix))] | length') DEPLOY_COUNT=$((RELEASES_TODAY + 1)) VERSION="quant_${TODAY}.${DEPLOY_COUNT}.${COMMIT}"