Repository navigation
fix(release): Check the published versions in a last job - #72
Merged
Merged
Conversation
The npm job checked the npm tags for 2 minutes after the publish. npm can take longer to show a new version, and a failed check skipped the Go tag, although npm had accepted both packages. The npm job now only publishes, and the Go tag still waits for it. A new last job, "Check the published versions", waits up to 10 minutes for the npm tags, the PyPI version, and the Go proxy. Its failure skips no publish. The texts now name "Re-run all jobs", because "Re-run failed jobs" keeps the first plan and can publish a package again.
check-sdk-build failed on each pull request that changed a workflow or a script after a release, because sdk-build.json on main names a published version. sdk_build.py check now takes --base, and refuses a version that a registry has only when sdk-build.json differs from the base commit. check-sdk-build.yml passes the base of the pull request.
amadeus
approved these changes
Oct 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A slow registry no longer skips the Go tag. The
npmjob ofpublish-sdk.ymlnow only publishes, and a new last job, "Check the published versions", waits up to 10 minutes for npm, PyPI, and the Go proxy. Its failure skips no publish. Also,check-sdk-buildrefuses a published version only in a release pull request, so a pull request that changes a workflow or a script after a release can pass.Why
The publish of
0.1.0-canary.6(run 40963162715, attempt 1):pypipublishedpierre-sdk0.1.0.dev6, andnpmpublished@pierre/sdkand@pierre/cli0.1.0-canary.6.dist-tags.canary12 times, 10 seconds apart.Expected: the run tags
go/v0.1.0-canary.6.Actual: the step failed with "@pierre/sdk has canary at '0.1.0-canary.5', not 0.1.0-canary.6", and the
gojob was skipped. The registry showed the new tag 3 seconds later. A second run of all jobs was necessary to push the Go tag.After that release,
check-sdk-buildfailed on this pull request with "the registries already have 0.1.0-canary.6", becausesdk-build.jsononmainnames a published version, and the check refused it on each pull request.Scope
npm: the step "Check the npm tags" is removed.gostill needsnpm, so the Go tag comes only after npm accepts both packages.go: it only tags. The request to the Go proxy moves to the new job.check("Check the published versions"): it runs aftergo, when no job failed. Every 20 seconds, for up to 10 minutes, it asks for the npmdist-tagsof each package, the PyPI version, andproxy.golang.org/.../@v/v<version>.info, and it names each one that is still missing. It needs no permission and no checkout.plangivespython_versionas an output, for the PyPI request.scripts/sdk_build.py check --base <commit>refuses a version that a registry has only whensdk-build.jsondiffers from the base commit.check-sdk-build.ymlfetches the base of the pull request and passes it. Without--base, the rule applies as before. The other checks of the build do not change, so a change intypescript/withoutsdk-build.jsonstill fails.AGENTS.mdname "Re-run all jobs". "Re-run failed jobs" keeps the outputs of the firstplan, so it can publish to npm again and fail.Tradeoffs
"bin[pierre]" script name dist/cli.js was invalid and removeddoes not change. npm 11.21.0 prints it also fornpm publishinsidecli/. npm only removes the leading./of./dist/cli.js, and the published package keepsbin.pierreasdist/cli.js.npx @pierre/cli@0.1.0-canary.6 versionand a global install work.Evidence
0.1.0-canary.6, reports each of the four as published in under one second.9.9.9-canary.1and a deadline of 1 second, it fails with exit status 1 and names each of the four.checkneedsplan,pypi,npm, andgo.scripts/tests/test_sdk_build.py(PullRequestTest), with the registries patched to have the version: a pull request that keepssdk-build.jsonpasses; a pull request whose base has the previous build, or no build, fails; with no base it fails; an unknown base fails and names it.python -m unittest discover -s scripts/testsruns 27 tests, and they pass.sdk_build.py check --base <main>passes with "sdk-build.json does not change"; with no base, and with the commit of the previous release as base, it fails with "the registries already have 0.1.0-canary.6".