AirBridge releases are prepared manually. No release is published automatically — every release requires a human to review artifacts, approve quality gates, and publish the GitHub release.
The current release workflow (release.yml) is triggered exclusively via workflow_dispatch. It builds platform artifacts and uploads them as workflow artifacts only. A GitHub release must be created manually after reviewing the artifacts.
Before triggering the release workflow, verify:
- All CI checks pass on
main. The CI workflow must be green before a release build is started. - Version is consistent across:
apps/desktop/package.json→"version"apps/desktop/src-tauri/Cargo.toml→versionapps/desktop/src-tauri/tauri.conf.json→"version"
- Alpha readiness document is current. See
docs/release/v0.1.0-alpha-readiness.md. - Known limitations are documented. See
docs/release/known-limitations.md. - Release notes are reviewed. See
docs/release/v0.1.0-alpha-release-notes.md. Usedocs/release/v0.1.0-alpha-publishing-checklist.mdfor the complete pre-publish checklist. - No prohibited content in repository. Run the prohibited-terms scan before tagging.
- Restore write execution remains disabled. No Airtable writes should occur from restore operations.
- Token persistence is not implemented. Tokens must be entered per-operation.
Run the full local quality gate to confirm:
npm run release:checkThis is equivalent to npm --prefix apps/desktop run check and runs typecheck, lint, format check, frontend tests, Rust checks, and a build verification.
The release workflow is triggered manually:
- Go to Actions → Release on GitHub.
- Click Run workflow.
- Set
versionto the release tag (e.g.v0.1.0-alpha). - Click Run workflow.
The workflow will:
- Run on macOS, Linux, and Windows.
- Execute all quality gates (
npm --prefix apps/desktop run check). - Build the Tauri application for each platform.
- Upload artifacts named
airbridge-<version>-<OS>as workflow run artifacts.
The workflow does not create a GitHub release automatically. It produces workflow run artifacts only. A GitHub release must be created manually after reviewing the artifacts.
After the workflow completes:
- Open the workflow run in the Actions tab.
- Download the artifact for each platform.
- Verify artifact names match the convention in
artifact-naming.md. - Smoke-test the installer on each target platform (see
docs/qa/release-qa-checklist.md). - Verify no token, full path, or record payload content appears in any installer UI.
After artifacts are reviewed and approved:
- Go to Releases → Draft a new release.
- Set the tag to the release version (e.g.
v0.1.0-alpha). Create the tag at this point — do not tag the repository locally before this step. - Set the title to
AirBridge v0.1.0-alpha. - Copy the release body from
docs/release/github-release-draft-template.md. - Upload the reviewed platform artifacts.
- Mark as pre-release for alpha/beta releases.
- Keep as draft until final review is complete.
- Publish when ready.
- If a workflow run needs to be cancelled, cancel it in the Actions tab before artifacts are published.
- If a GitHub release was published in error, it can be converted back to draft or deleted from the GitHub Releases page.
- Local repository state is not affected by triggering or cancelling a workflow run.
- No local tagging or pushing is required to trigger the workflow —
workflow_dispatchdoes not require a tag.
Both CI and release workflows cache npm and Cargo dependencies:
- npm —
actions/setup-nodecaches the npm module cache keyed toapps/desktop/package-lock.json. A cache hit skips most of thenpm cidownload time. - Cargo —
Swatinem/rust-cache@v2caches the Cargo registry and compiled dependency artifacts keyed per OS andCargo.lock. A cache hit significantly reduces Rust compilation time. cargo fetch— runs before checks and builds with one automatic retry (cargo fetch || sleep 10 && cargo fetch). This reduces failures caused by transient crates.io registry or network resets. It does not mask real compile failures.
If a CI run fails on a dependency download step (e.g. a registry connection reset), re-run the job once before investigating the code.
- Code signing and notarization are not configured. macOS
.dmgartifacts will not be notarized. Windows.msiartifacts will not be code-signed. Both are required before distributing to end users outside the development team. - Checksums are not automatically generated and uploaded. They must be created manually from the downloaded artifacts (see
docs/release/checksums.md). - The release workflow does not run on self-hosted runners or ARM targets.
- Linux
.debpackaging is not verified end-to-end.