Bondry uses GitHub Actions for release preparation and publication. No personal access token or signing secret is required; the workflows use the repository-scoped GITHUB_TOKEN and GitHub's short-lived OIDC identity.
Before the first release:
- Make
mainthe default branch and create a branch ruleset that requires pull requests and theCI gatestatus check before merge. - Create a GitHub environment named
releasewith a required reviewer. - Allow GitHub Actions to request read and write repository permissions.
- Make the repository public so the release can receive a public Sigstore provenance attestation.
- Enable immutable releases before publishing the first release.
Release preparation deliberately refuses to run while the repository is private. The build job and pull-request workflows have read-only repository permissions. A separate protected publication deployment receives the write and OIDC permissions required to attest and publish the prepared artifact.
Update every workspace package to the same numeric semantic version, commit the source changes, push them to main, and wait for CI to pass. From the Actions tab, run Prepare Release from main and enter the version without a v prefix.
Preparation builds and verifies each binary once, computes SwiftPM checksums from those exact archives, renders Package.swift, and creates the release commit and annotated tag as Cocoa. It stores the five archives, checksums, and preparation metadata together as a workflow artifact, then queues Publish Release from the new tag. Approve the release environment deployment after preparation succeeds.
The preparation workflow:
- Verifies repository visibility, branch, version consistency, and tag availability.
- Runs the Rust, Swift, formatting, lint, and shell checks.
- Builds and verifies every XCFramework slice with pinned Rust and Xcode versions.
- Computes each archive checksum and writes it into the release manifest.
- Stores the exact archives with their checksums and release metadata.
- Creates the release commit and annotated
v<version>tag.
The publication deployment:
- Downloads the exact archives produced by the successful preparation run.
- Verifies the workflow run, tag, release commit, metadata, archives, checksum files, and
Package.swiftagree. - Creates a public provenance attestation for every archive.
- Uses a pinned release action to upload all ten assets to a draft with bounded API retries.
- Publishes the draft as a GitHub prerelease protected by the repository's immutable-release policy.
- Downloads all published assets and compares them with the prepared files.
Publication never rebuilds a binary. A failed publication can retry the prepared artifacts without changing their checksums. Published versions and their assets must never be replaced.