Repository navigation
CI: release automation for sdist, GitHub release and PyPI (1.4-maint) - #10607
Merged
ThomasWaldmann merged 1 commit intoNov 10, 2026
Merged
Conversation
Like on master, pushing a release tag now does the release: - the "release" job (.github/workflows/release.yml) builds the sdist, checks that it has the version of the tag and that it can be installed, attests its build provenance and drafts the GitHub release with the sdist and all standalone binaries attached, - the "pypi" job uploads the sdist to PyPI via trusted publishing (gated by the "pypi" environment). Every release asset comes with the sigstore bundle of its provenance attestation as <asset>.sigstore.jsonl, for offline verification: the binary jobs now hand their bundles over together with the binaries. The sdist is no longer built and GPG-signed locally, so scripts/sdist-sign is removed. The upload to PyPI is done by CI, so scripts/upload-pypi is removed, too. The release checklist is updated accordingly. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
This ports master's release automation to 1.4-maint. Pushing a release tag now does the release.
releasejob (.github/workflows/release.yml, a reusable workflow called fromci.yml):python -m build --sdist,twine check),.devNversion),pypijob (ci.yml): uploads the sdist to PyPI via trusted publishing, gated by thepypienvironment. It can't live in the reusable workflow because PyPI trusted publishing doesn't support that.Sigstore bundles: every release asset gets
<asset>.sigstore.jsonlfor offline verification. The binary jobs (native_tests, vm_tests) now copy their attestation bundle next to the binaries before uploading the artifact. In vm_tests the attestation now runs before the upload, not after it.Removed scripts: the sdist is no longer built, GPG-signed or uploaded locally, so
scripts/sdist-signandscripts/upload-pypiare removed. The release checklist indocs/development.rstis updated.docs/binaries/00_README.txtnow explains how to verify the sdist's attestation.Differences from master: 1.4 binary names (glibc235, macos-15, freebsd-14), 1.4 build dependencies, the existing 1.4 action pins, and no GPG step in the draft release.
Notes:
ci.yml, environmentpypi) and thepypienvironment are already used by master. They aren't tied to a branch, so they should cover 1.4-maint too.actionlint: no new findings except SC2046 on thegh releaseasset list, which is the deliberate word splitting copied from master.🤖 Generated with Claude Code