Skip to content

ci: sign and notarize macOS release builds#289

Merged
debba merged 1 commit into
mainfrom
ci/macos-notarization
Jun 5, 2026
Merged

ci: sign and notarize macOS release builds#289
debba merged 1 commit into
mainfrom
ci/macos-notarization

Conversation

@debba
Copy link
Copy Markdown
Collaborator

@debba debba commented Jun 5, 2026

What

macOS release builds are now code-signed with a Developer ID Application certificate and notarized through App Store Connect, so users no longer hit Gatekeeper warnings when opening the app.

How

tauri-action already handles signing and notarization when the right environment variables are present, so this wires them up:

  • A new macOS-only step decodes the App Store Connect API key (.p8) from a base64 secret into a temp file and exports its path.
  • The signing identity, certificate, and API key credentials are passed to tauri-action via env.

Notarization uses an App Store Connect API key rather than an Apple ID app-specific password, since the key doesn't expire and is easier to rotate in CI.

The Apple variables are set for every matrix entry but only take effect on the macOS jobs — tauri ignores them when bundling for Linux and Windows.

Required secrets

These must be added in repo settings before the next tagged release:

Secret Description
APPLE_CERTIFICATE base64 of the Developer ID Application .p12
APPLE_CERTIFICATE_PASSWORD password for the .p12
APPLE_SIGNING_IDENTITY e.g. Developer ID Application: Name (TEAMID)
APPLE_API_ISSUER App Store Connect issuer ID
APPLE_API_KEY API key ID
APPLE_API_KEY_CONTENT base64 of the .p8 key file

Testing

Not exercisable from a PR — needs a tagged release (or a workflow_dispatch run) once the secrets are in place. After a build, the DMG can be verified with spctl -a -t install and xcrun stapler validate.

Pass the Developer ID Application certificate and App Store Connect API
key to tauri-action so the macOS .app and .dmg are code-signed and
notarized during the release build. The API key is decoded from a
base64 secret into a temp file on the macOS runners only.

The Apple env vars are harmless on the Linux and Windows jobs since
tauri only consumes them when bundling for macOS.
@kilo-code-bot
Copy link
Copy Markdown

kilo-code-bot Bot commented Jun 5, 2026

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Files Reviewed (1 file)
  • .github/workflows/release.yml - macOS code-signing and notarization setup

The changes are clean and well-structured. The macOS-only API key preparation step is correctly gated with startsWith(matrix.platform, 'macos'), and the signing/notarization environment variables are properly passed to tauri-action. Documentation in the PR description is thorough regarding required secrets.


Reviewed by kimi-k2.6-20260420 · 137,515 tokens

@debba debba merged commit 2b584e6 into main Jun 5, 2026
2 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.

1 participant