Skip to content

ci: shield-swap-sdk release job, macos-15-intel runners, PyPI trusted publishing - #53

Merged
iamalwaysuncomfortable merged 3 commits into
masterfrom
ci/trusted-publishing
Jul 14, 2026
Merged

ci: shield-swap-sdk release job, macos-15-intel runners, PyPI trusted publishing#53
iamalwaysuncomfortable merged 3 commits into
masterfrom
ci/trusted-publishing

Conversation

@iamalwaysuncomfortable

@iamalwaysuncomfortable iamalwaysuncomfortable commented Jul 14, 2026

Copy link
Copy Markdown
Member

What

Release-pipeline changes cherry-picked from feat/shield-swap-sdk (everything before these landed in #49's squash), plus the switch to PyPI trusted publishing:

  1. build-shield-swap job — builds the pure-Python shield-swap-sdk universal wheel + sdist, installs the release's own aleo-sdk wheel (linux-x86_64 artifact) and runs the hermetic suite against it, smoke-tests the installed wheel away from the source tree, and uploads as shield-swap-wheels-universal (matches the release artifact globs). Also adds shield-swap-sdk/** to the workflow path filters, giving the package CI coverage.
  2. macos-13macos-15-intel — GitHub retired the macOS 13 image on 2025-12-04, so both macos-x86_64 jobs queued forever (no runner ever picked them up). macos-15-intel is GitHub's designated Intel migration path (supported until Fall 2027).
  3. Trusted publishing (OIDC), one release job per package — replaces the token-based maturin upload with pypa/gh-action-pypi-publish under id-token: write. No PYPI_API_TOKEN secret is needed or used. Pending publishers must be unique per (repo, workflow, environment), so each package publishes from its own job/environment, and releases run strictly in order:
Job Package Environment Artifacts
release-abi aleo-contract-abi-generator pypi-abi abi-wheels-*
release-sdk aleo-sdk pypi wheels-*
release-shield-swap shield-swap-sdk pypi-shield-swap shield-swap-wheels-*

release-sdk needs release-abi; release-shield-swap needs release-sdk (it declares aleo-sdk>=0.2); all three gate on every build job. skip-existing: true keeps partial-failure re-runs safe.

Prerequisites already configured

Three pending publishers are registered on PyPI matching the table above (owner ProvableHQ, repo python-sdk, workflow sdk-wheels.yml). The GitHub environments auto-create on first use.

Release flow after merge

git tag v0.2.0 && git push origin v0.2.0

The tag run builds everything, then publishes abi → sdk → shield-swap. This PR's own CI run doubles as the first live validation of the macos-15-intel runners.

iamalwaysuncomfortable and others added 3 commits July 14, 2026 14:00
Pure-Python universal wheel + sdist; the job installs the release's own
aleo-sdk wheel (linux-x86_64 artifact) and runs the hermetic suite against
it before uploading. Artifact name matches the release job's '*wheels-*'
glob, so one tag publishes all three packages.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…5-intel

The macos-13 label got no runners since GitHub retired the image
(2025-12-04), so both macos-x86_64 jobs queued forever. macos-15-intel is
GitHub's designated Intel migration path (supported until Fall 2027).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Replaces the token-based maturin upload with pypa/gh-action-pypi-publish
under OIDC (id-token: write, no PYPI_API_TOKEN). Pending publishers must be
unique per (repo, workflow, environment), so each package publishes from
its own job/environment: pypi-abi, pypi, pypi-shield-swap. Releases run in
dependency order abi -> sdk -> shield-swap, each also gated on all builds.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@iamalwaysuncomfortable
iamalwaysuncomfortable merged commit e2f05f6 into master Jul 14, 2026
22 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