Skip to content

fix(ci): smoke retry defeated by errexit; idempotent npm publish#14

Merged
a-essawy merged 1 commit into
mainfrom
fix/release-smoke-errexit
May 31, 2026
Merged

fix(ci): smoke retry defeated by errexit; idempotent npm publish#14
a-essawy merged 1 commit into
mainfrom
fix/release-smoke-errexit

Conversation

@a-essawy
Copy link
Copy Markdown
Contributor

What

The v1.0.2 release published to npm fine but release.yml reported failure — the smoke test died on attempt 1 (exit 127), skipping Create GitHub Release + MCP registry and opening issue #13.

Root cause

The smoke step runs under GitHub's default bash -e. Inside the backoff loop, OUTPUT=$(npx -y @rendobar/mcp@VERSION ...) returns non-zero when the npm CDN hasn't propagated yet (~30s post-publish). set -e aborts the step before EXIT=$? is captured or any retry runs — the 5×/150s backoff is dead code on a first miss. 1.0.1 got lucky with fast propagation.

Fix

  • set +e in the smoke step so its own retry loop owns control flow.
  • Make the publish step idempotent (skip if the version is already live) so a recovery re-run / manual workflow_dispatch to backfill a skipped downstream step doesn't 403 on the existing version.

Note (already recovered manually)

  • npm @rendobar/mcp@1.0.2 is live + verified (npx … --version → 1.0.2).
  • GitHub Release v1.0.2 created manually.
  • MCP registry still pending — will backfill via workflow_dispatch (tag=v1.0.2) once this merges, then close Release v1.0.2 failed #13.

The smoke step runs under GitHub''s default `bash -e`. Inside the backoff
loop, `OUTPUT=$(npx -y @rendobar/mcp@VERSION ...)` returns non-zero when the
npm CDN hasn''t propagated yet (~30s after publish), and errexit aborts the
step before EXIT is captured or any retry runs — the 5x/150s backoff never
executes. v1.0.2 published fine but smoke failed on attempt 1, skipping the
GitHub Release + MCP registry steps. Add `set +e` so the loop owns its
control flow.

Also make the publish step idempotent: skip if the version is already on
npm, so a recovery re-run (or a manual dispatch to backfill a skipped
downstream step) doesn''t 403 on the existing version.
@a-essawy a-essawy enabled auto-merge (squash) May 31, 2026 23:57
@a-essawy a-essawy merged commit d285c88 into main May 31, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Release v1.0.2 failed

1 participant