From 4c7ae3adc60da4eb46fb61011880f3141667ff4f Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sat, 3 Oct 2026 00:58:33 +0200 Subject: [PATCH] Publish workflow: a package's first release passes --first-release, which the checker verifies Co-Authored-By: Claude Sonnet 5.5 --- .github/workflows/publish-packages.yml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish-packages.yml b/.github/workflows/publish-packages.yml index 60cc6a01..5e4129ed 100644 --- a/.github/workflows/publish-packages.yml +++ b/.github/workflows/publish-packages.yml @@ -75,11 +75,17 @@ jobs: if: startsWith(github.ref, 'refs/tags/cultcache-ts-v') run: | tagged="${GITHUB_REF_NAME#cultcache-ts-v}" + # The package's first release carries --first-release. The checker believes it only + # when no other cultcache-ts tag exists, so this test only avoids refusing the + # releases that follow; it does not decide anything. + first="" + if [ -z "$(git tag -l 'cultcache-ts-v*' | grep -vxF "$GITHUB_REF_NAME" || true)" ]; then first="--first-release"; fi node scripts/check-changelog-semver.mjs \ --package "@gamecult/cultcache-ts" \ --changelog packages/cultcache-ts/CHANGELOG.md \ --version "$tagged" \ - --tag-prefix cultcache-ts + --tag-prefix cultcache-ts \ + $first - name: Build and test working-directory: packages/cultcache-ts @@ -159,11 +165,15 @@ jobs: if: steps.selected.outputs.run == 'true' && startsWith(github.ref, 'refs/tags/') run: | tagged="${GITHUB_REF_NAME#${{ matrix.package }}-v}" + # See the cultcache-ts job: the checker, not this test, decides whether a first release is real. + first="" + if [ -z "$(git tag -l '${{ matrix.package }}-v*' | grep -vxF "$GITHUB_REF_NAME" || true)" ]; then first="--first-release"; fi node scripts/check-changelog-semver.mjs \ --package "${{ matrix.package }}" \ --changelog packages/${{ matrix.package }}/CHANGELOG.md \ --version "$tagged" \ - --tag-prefix "${{ matrix.package }}" + --tag-prefix "${{ matrix.package }}" \ + $first # Lower layers install from source so a release of one package is tested # against the sibling revision it was cut with, not whatever PyPI has.