Skip to content

ci(release): make tag-driven release idempotent and npm-optional#51

Merged
wesleysimplicio merged 1 commit into
mainfrom
claude/wizardly-mayer-BduSo
May 31, 2026
Merged

ci(release): make tag-driven release idempotent and npm-optional#51
wesleysimplicio merged 1 commit into
mainfrom
claude/wizardly-mayer-BduSo

Conversation

@wesleysimplicio
Copy link
Copy Markdown
Owner

Summary

Hardens the tag-driven release.yml pipeline so it degrades gracefully instead of hard-failing, addressing the release fragility documented in #34:

  • The maintainer warned against running release.yml because PyPI was already at 1.12.0, so a re-run would hard-fail on the PyPI upload.
  • Workflow run 26680581091 died on the npm leg with an empty NODE_AUTH_TOKEN.

Changes (.github/workflows/release.yml)

  • publish-pypi — upload with --skip-existing so re-tagging a version that already exists on PyPI no-ops the existing files instead of erroring the whole release.
  • publish-npm — skip gracefully (with a ::warning::) when NPM_TOKEN is absent, and expose a published job output. The dedicated npm release workflow remains the path to repair npm drift once a token is configured.
  • smoke — only run the npm install smoke-check when publish-npm actually published, so it never fails spuriously against the stale registry version.

Release status

  • PyPI: simplicio-prompt 1.12.1 published out-of-band (PyPI was at 1.12.0; 1.12.1 is the Mapper context artifacts release). This PR only makes the automated pipeline safe to re-run.
  • npm: still blocked on an NPM_TOKEN secret (the npm criteria in [Release] Publish 1.12.0 to npm (registry stuck at 1.1.0) #34 cannot be satisfied without it).

Tests

  • npm test — Node suite (CLI + hooks + cache + targets) and Python suite (100 tests, 4 skipped) all green.
  • twine check dist/* — PASSED for both wheel and sdist.
  • release.yml validated as well-formed YAML; job outputs / needs wiring confirmed.

Generated by Claude Code

Hardens the combined PyPI+npm release pipeline so re-runs degrade
gracefully instead of hard-failing — the failure modes documented in #34
(run 26680581091 died on the npm leg with an empty NODE_AUTH_TOKEN, and
the maintainer flagged that re-running would also fail PyPI because the
version was already published).

- publish-pypi: upload with `--skip-existing` so re-tagging a version
  that already exists on PyPI no-ops instead of erroring the release.
- publish-npm: skip gracefully (with a warning) when NPM_TOKEN is absent,
  and expose a `published` job output. The dedicated `npm release`
  workflow remains the path to repair npm drift once a token is set.
- smoke: only run the npm install smoke-check when npm actually published.

PyPI distribution of 1.12.1 is published out-of-band; this only makes the
automated pipeline safe to re-run.

https://claude.ai/code/session_0197tU2pez27S2N3iFekR9Kr
@wesleysimplicio wesleysimplicio marked this pull request as ready for review May 31, 2026 10:32
@wesleysimplicio wesleysimplicio merged commit 184f260 into main May 31, 2026
3 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.

2 participants