Repository navigation
ci: gate releases on the built wheel actually running - #2
Merged
Merged
Conversation
The test suite runs against src/, so nothing in CI could see a packaging mistake: an asset the build backend leaves out, a missing entry point, a package that imports but will not start. Those surface on the user's machine, after the release. On a v* tag: build, then install the wheel into a clean venv on Ubuntu and Windows and smoke test it, and only then publish. publish needs smoke, so a wheel that does not run produces a red X instead of a broken download. The smoke test is a script rather than inline YAML so it can be run locally and reviewed. It asserts the runtime assets are in the *installed* package, that both entry points resolve, and that the app stays up when launched - not that it exits 0, since a terminal that exits on its own has crashed. Verified both ways locally: exit 1 with an asset removed, exit 0 intact. It also runs on PRs that touch the release machinery, because a pipeline only exercised by releases is one you debug during a release. Code assisted by Opus 5.
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.
Adds a release pipeline that publishes only if the built wheel installs and
runs.
build→smoke(Ubuntu + Windows) →publish, withpublishdeclaringneeds: smoke, so a wheel that doesn't start means no Release and noattached artifacts — a red X rather than a broken download.
The smoke test (
scripts/smoke_test.py) installs the wheel into a clean venvand checks what the source-tree tests structurally cannot:
terminal.html, xterm.js, …) are in the installedpackage
crashed
Verified locally both ways: exit 1 with an asset removed, exit 0 intact.
Also checks the tag and the wheel version agree, so
@v1.0.0can neverinstall something reporting a different version.
This PR runs the pipeline itself (publish is skipped — it's tag-only), which
is the point of the
pull_requestpath filter.🤖 Generated with Claude Code
https://claude.ai/code/session_01M8UgLA68nRCYg3qFTyW8ms