Repository navigation
chore(release): don't fail the release on a slow npm registry - #861
Merged
Merged
Conversation
release.sh gave the registry 30 seconds to list a version that release-npm.yml had just published, and npm can take minutes, so the v1.8.0 release stopped at step 4 although the publish had succeeded. Count npm as done once a release-npm.yml run for the tag has succeeded, found by a run-name the workflow now carries, then wait up to ten minutes for the registry and only warn if it still lags: no later step needs it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Workflow matching can select a different package version or concurrent release, causing required publishing to be skipped or the script to continue despite the intended release failing.
3 open issues
What changed in this PR
This PR updates release automation so delayed npm registry visibility does not stop the remaining release steps after a successful publish workflow.
Changes:
- Adds a release-tag-specific workflow run title for npm publishing.
- Reuses successful or in-flight matching runs before dispatching another publish.
- Extends registry polling to a nominal ten minutes, then warns and continues.
| File | Description |
|---|---|
scripts/release.sh |
Adds npm run lookup and nonfatal registry visibility polling. |
.github/workflows/release-npm.yml |
Adds a run title containing the release tag. |
Review effort: Balanced
- The run-name now carries the npm version and the beta flag beside the tag, so a run that published a different version from the same tag, or a beta, doesn't count as this release's publish. - After dispatching, find the new run by that title rather than as the workflow's latest, which could be a concurrent release's. - Time the registry wait against a deadline and cap each registry request at 15s, so a stalled request can't hold up the release. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Picks up the Wasmtime security fixes RUSTSEC-2026-0420 and RUSTSEC-2026-0422 through RUSTSEC-2026-0424, which cargo-deny rejects 49.0.4 for. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
raymondk
approved these changes
Oct 30, 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.


During the v1.8.0 release,
scripts/release.shstopped at step 4 even though the publish had worked.release-npm.ymlsucceeded and npm replied "Your package is being processed and may take a few minutes to become available". The script gave the registry only 30 seconds to list@icp-sdk/icp-cli@1.8.0, then failed.release-npm.ymlgets arun-name:Publish 1.8.0 to npm from v1.8.0, plus(beta)for beta runs. The script uses it to find the run for this release. Aworkflow_dispatchrun's inputs aren't visible ingh run list, and the oldensure_workflow_runmatched any run of the workflow. Matching the npm version and the beta flag along with the tag means a run that published a different version from the same tag doesn't count.publish-all.shskips versions that are already published.NPM_VISIBLE_TIMEOUT_SECONDS), and each registry request times out after 15 seconds. If the version still isn't listed, it warns and carries on: neither the homebrew step nor the docs step depends on npm.Also in this PR, because CI needed it: Wasmtime 49.0.4 → 49.0.5 (
wasmtime,wasmtime-wasi). cargo-deny began rejecting 49.0.4 over four new advisories, which faileddependencies:requiredhere:Only Wasmtime's own crates move in
Cargo.lock(wasmtime, cranelift, pulley, wiggle). This patches the runtime that runspluginsync steps and extensions. Nothing else about them changes.Tested:
bash -n scripts/release.sh.cargo deny check advisoriespasses, andcargo checkpasses foricp-sync-pluginandicp-extension.🤖 Generated with Claude Code