P3-10: macOS .app, Developer ID signing, notarisation #39
Labels
No labels
data-integrity
engine
platform
procurement
remote
scaffold
ui
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: Cordy/cairn-desktop#39
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Depends on P3-9, P0-2 (Apple account and certificates) and P0-4 (Mac runner).
Files
.forgejo/workflows/release-macos.yml,build/macos/Info.plist,build/macos/entitlements.plistUniversal binary
Build for both
arm64andamd64and combine withlipointo a universal binary. Intel Macs are still in use, and shipping two downloads confuses people.The exact signing and notarisation chain
Five things that trip people up
--options runtimeis mandatory. Without the hardened runtime, notarisation is rejected outright..app,.dmgand.pkgonly. Staple the bundle, then wrap it in the.dmgyou ship.notarytool— use an app-specific password or an App Store Connect API key.Ship a DMG
A drag-to-Applications DMG is the convention macOS users expect. Sign and staple the DMG too, so Gatekeeper is satisfied before the app is even copied.
Sparkle
Sparkle (P3-7) is a framework inside the bundle — it must be signed as part of the inside-out pass, and its EdDSA public key goes in
Info.plist.Steps
.app.git commit -s -m "build: macOS universal app, signing and notarisation"Acceptance criteria
spctl -a -vvv -t installreports accepted.