Skip to content

Sign and notarize macOS release binaries#1

Merged
jclusso merged 1 commit into
masterfrom
apple-notarize
May 31, 2026
Merged

Sign and notarize macOS release binaries#1
jclusso merged 1 commit into
masterfrom
apple-notarize

Conversation

@jclusso
Copy link
Copy Markdown
Member

@jclusso jclusso commented May 26, 2026

Adds a notarize block that signs darwin binaries with the Developer ID certificate and submits them to Apple's notary service before they land in the release archives. Implementation uses goreleaser's embedded quill signer, so it runs on the existing ubuntu-24.04 runner — no dedicated macOS runner needed.

The block is gated on IsSnapshot: make release-snapshot skips signing entirely (no secrets needed locally), while real tag builds run the full sign + notarize flow and fail loudly if any of MACOS_SIGN_P12, MACOS_SIGN_PASSWORD, MACOS_NOTARY_KEY, MACOS_NOTARY_KEY_ID, or MACOS_NOTARY_ISSUER_ID is missing — preferable to silently shipping unsigned binaries that trigger Gatekeeper warnings.

Copilot AI review requested due to automatic review settings May 26, 2026 13:24
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds macOS signing + notarization to the release pipeline so Darwin artifacts are Developer ID–signed and submitted to Apple’s notary service (via GoReleaser’s embedded quill), while remaining skippable when required secrets aren’t available (e.g., local snapshot builds).

Changes:

  • Add a GoReleaser notarize.macos configuration block gated on required secrets.
  • Expose required macOS signing/notarization secrets to the GoReleaser GitHub Actions workflow step.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
.goreleaser.yaml Adds a notarize block to sign and notarize macOS artifacts, gated by env-provided secrets.
.github/workflows/release.yml Passes macOS signing/notary secrets into the GoReleaser action environment.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .goreleaser.yaml Outdated
# keeps working.
notarize:
macos:
- enabled: '{{ and (ne .Env.MACOS_SIGN_P12 "") (ne .Env.MACOS_SIGN_PASSWORD "") (ne .Env.MACOS_NOTARY_KEY "") (ne .Env.MACOS_NOTARY_KEY_ID "") (ne .Env.MACOS_NOTARY_ISSUER_ID "") }}'
@jclusso jclusso force-pushed the apple-notarize branch 2 times, most recently from 849e181 to 908fc2e Compare May 30, 2026 11:43
@jclusso
Copy link
Copy Markdown
Member Author

jclusso commented May 30, 2026

Rebased onto latest master (9be0109). Reconciled with the goreleaser work that landed since this branched: the workflow env block now keeps RELEASE_GITHUB_TOKEN (the old HOMEBREW_TAP_GITHUB_TOKEN was renamed upstream) and adds the MACOS_* secrets; the notarize: block slots in cleanly between checksum: and snapshot:. goreleaser check passes.

Adds a `notarize` block that signs `darwin` binaries with the Developer ID certificate and submits them to Apple's notary service before they land in the release archives. Implementation uses `goreleaser`'s embedded `quill` signer, so it runs on the existing `ubuntu-24.04` runner — no dedicated macOS runner needed.

The block is gated on `IsSnapshot`: `make release-snapshot` skips signing entirely (no secrets needed locally), while real tag builds run the full sign + notarize flow and fail loudly if any of `MACOS_SIGN_P12`, `MACOS_SIGN_PASSWORD`, `MACOS_NOTARY_KEY`, `MACOS_NOTARY_KEY_ID`, or `MACOS_NOTARY_ISSUER_ID` is missing — preferable to silently shipping unsigned binaries that trigger Gatekeeper warnings.
@jclusso jclusso merged commit 61942ac into master May 31, 2026
3 checks passed
@jclusso jclusso deleted the apple-notarize branch May 31, 2026 14:50
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.

2 participants