Mac DMG: Developer ID signing + notarization
## Что это
Release pipeline для macOS:
1. `electron-builder` собирает .app bundle (universal: arm64 + x64)
2. Все Mach-O бинарники подписываются `Developer ID Application: ROX.ONE LLC ()` через `codesign --options=runtime --timestamp`
3. Entitlements: hardened runtime, `com.apple.security.app-sandbox`, специфичные scopes для file-access
4. .dmg создаётся через `electron-builder dmg`, подписывается тем же ID
5. Notarization: `xcrun notarytool submit ... --wait` (≤ 15 min обычно)
6. Stapling: `xcrun stapler staple` встраивает notarization ticket
7. Verify: `spctl --assess --verbose=4 --type=open --context context:primary-signature` зелёный
CI: secrets `APPLE_ID`, `APPLE_APP_SPECIFIC_PASSWORD`, `APPLE_TEAM_ID`, P12 cert через base64-secret.
Компоненты: `.github/workflows/release-mac.yml`, `electron-builder.json` mac section.
## Зачем
Unnotarized .dmg на современном macOS — это «App is damaged» dialog для 100% downloaders. Без signing+notarization Mac как platform недоступна для public release. Этот flow — обязательное условие GA на Mac.
## Источники вдохновения
- [alienator88/Sentinel](https://github.com/alienator88/Sentinel) — macOS Gatekeeper/signing SwiftUI reference
- [claration/Impactor](https://github.com/claration/Impactor) — Rust IPA-sideloading с signing patterns
- [666OS/ClashMac](https://github.com/666OS/ClashMac) — SwiftUI macOS proxy с code-signing flow
## 🔗 Linear
- [PZD-423](https://linear.app/kuhjie/issue/PZD-423) — backing ticket
Log in to comment and vote
No comments yet
Be the first to share your thoughts.