Skip to content

chore(ci): move macOS release pipeline to GitHub Actions - #144

Merged
iret77 merged 1 commit into
mainfrom
chore/ci-macos-release
Jul 29, 2026
Merged

chore(ci): move macOS release pipeline to GitHub Actions#144
iret77 merged 1 commit into
mainfrom
chore/ci-macos-release

Conversation

@iret77

@iret77 iret77 commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Summary

Ports scripts/release.sh to a manually dispatched GitHub Actions workflow (release-macos.yml), per the global convention: macOS builds, signing and notarization run exclusively in CI (Developer ID Application + App Store Connect API key), never on a local machine.

  • Pipeline: version-sync check (fails in seconds on drift, before any build minute) → Tauri build (signed, updater artifacts) → Info.plist verification → codesign with entitlements → notarize + staple (app, then DMG) → updater bundle + latest.json → tag + GitHub release → PyPI publish (last, because PyPI versions are permanent).
  • Inputs: version, prerelease (validate-first flow, updater clients skip pre-releases), publish-pypi.
  • Cost design: dispatch-only, single macOS job, cheap checks first.
  • Keychain/notary steps follow the host-admin macos-sign.yml template, inlined because aiui signs three artifacts in sequence and builds the DMG from the already-stapled app.
  • scripts/release.sh stays as documented emergency fallback; stale comments in ci.yml / release-windows.yml updated.

Not included (required before first dispatch)

The workflow needs secrets that do not exist in byte5ai yet (org has only NPM_TOKEN): the five MACOS_* signing/notary secrets, TAURI_SIGNING_PRIVATE_KEY(_PASSWORD), UV_PUBLISH_TOKEN. Source files live in ~/.config/macos-signing/ on the maintainer's machine — see handover in the session.

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

Port scripts/release.sh to .github/workflows/release-macos.yml
(workflow_dispatch): Tauri build, Developer-ID codesign with
entitlements, notarization + stapling via App Store Connect API key,
DMG, signed updater bundle + latest.json, tag + GitHub release, PyPI
publish. Keychain/notary steps follow the host-admin macos-sign.yml
template (inlined — aiui signs three artifacts in sequence and builds
the DMG from the stapled app, which a single artifact-path call can't
express).

Cost design per CI playbook: dispatch-only trigger, single macOS job,
version-sync check first so a drifted dispatch fails in seconds.

scripts/release.sh stays as documented emergency fallback; comments in
ci.yml and release-windows.yml updated to point at the new workflow.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@iret77
iret77 merged commit 843d0cf into main Jul 29, 2026
4 checks passed
@iret77
iret77 deleted the chore/ci-macos-release branch July 29, 2026 12:19
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.

1 participant