fix(release): Developer-ID sign nested computerd bundle before notarization#159
Conversation
…zation The computerd helpers ship as a nested .app resource (Resources/jcode-computerd.app) inside the Tauri app. Tauri signs the outer app and externalBin sidecars with Developer ID but does not re-sign resource bundles, so the ad-hoc signature from build_computerd_bundle.sh reached notarization and Apple rejected it: 'not signed with a valid Developer ID certificate', 'no secure timestamp', 'hardened runtime not enabled'. Add a CI step that imports the Developer ID cert into a throwaway keychain and re-signs the nested bundle (hardened runtime + secure timestamp, shared identifier) before 'pnpm tauri build'. Skipped when signing is disabled (no APPLE_CERTIFICATE), since Tauri then neither signs nor notarizes.
|
Warning Review limit reached
Next review available in: 22 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
问题
上一个 PR (#158) 修复后,bundle 能成功构建,但 Release 的两个 macOS desktop job 在**公证(notarization)**阶段失败(run 29713342361):
原因
computerd helpers 以嵌套 .app resource(
Resources/jcode-computerd.app)形式打进 Tauri app。Tauri 只会用 Developer ID 签外层 app 和externalBinsidecar,不会重签 resource 里的嵌套 bundle。于是build_computerd_bundle.sh打的 ad-hoc 签名被原样带入公证上传,被 Apple 拒绝。(设计文档 computer-helper-design.md §11 预留的 "Release wiring" 正是此处。)修复
新增 CI 步骤
Sign computerd bundle (Developer ID),在pnpm tauri build之前:--options runtime)+ secure timestamp,沿用共享 identifier 保持单一 TCC 身份;codesign --verify --deep --strict校验。仅当配置了
APPLE_CERTIFICATE时执行;未配置签名时 Tauri 既不签名也不公证,ad-hoc bundle 对无签名本地构建仍然可用(早退 exit 0)。daemon 仅使用 AX + ScreenCaptureKit,hardened runtime 下无需额外 entitlements(已 grep 确认无 DYLD/dlopen/JIT 等敏感用法)。
验证
actionlint通过(shellcheck 无告警)。APPLE_CERTIFICATE未设置时早退 exit 0 已本地验证。