Revert macOS signing workaround now that GoReleaser ships TeamID fix#460
Revert macOS signing workaround now that GoReleaser ships TeamID fix#460
Conversation
GoReleaser v2.15.4 bumps goreleaser/quill to a commit synced with anchore/quill upstream, which includes the TeamIdentifier fix from anchore/quill v0.7.0. The workaround from #392 (parallel signing via scripts/sign-darwin.sh plus a separate post-publish notarize step) is no longer needed. - Drop the scripts/sign-darwin.sh build hook from .goreleaser.yaml and restore the native notarize.macos block with an env-gated `enabled` template, so local dev with no secrets stays signing-free. - Remove the quill install, credential prep, separate notarize, and credential cleanup workflow steps. Restore MACOS_* env vars on the GoReleaser step and drop --skip=notarize. - Bump the GoReleaser action from v2.14.1 to v2.15.4 and pin the same version in .mise.toml so make test-release exercises the same binary CI uses. Both pins carry sync comments cross-referencing each other. - Drop the "macOS signing tradeoffs" section from RELEASING.md — the publish/notarize race window it described no longer exists, since signing and notarization run as one wait-blocking call again. The macos-verify post-release job is signing-method-agnostic and stays in place as ongoing CI coverage of TeamIdentifier, hardened runtime, and notarization. Closes #393
Sensitive Change Detection (shadow mode)This PR modifies control-plane files:
|
There was a problem hiding this comment.
Pull request overview
Reverts the macOS signing/notarization workaround (custom quill-based hook + post-publish notarize) now that GoReleaser v2.15.4’s embedded goreleaser/quill includes the TeamIdentifier fix, restoring a single wait-blocking GoReleaser notarize flow.
Tip
If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or run gh pr ready --undo.
Click "Ready for review" or run gh pr ready to reengage.
Changes:
- Remove the custom darwin signing hook/script and reinstate GoReleaser’s built-in
notarize.macosconfiguration (env-gated). - Simplify the release workflow by dropping quill install/credential prep/manual notarize/cleanup and running GoReleaser with macOS secrets.
- Pin GoReleaser v2.15.4 for both CI and local tooling; update release docs accordingly.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
.goreleaser.yaml |
Removes build hook signing and restores built-in notarize.macos with env-gated enablement. |
.github/workflows/release.yml |
Removes manual quill/notarize steps, passes MACOS_* secrets to GoReleaser, and bumps GoReleaser version pin. |
.mise.toml |
Pins local GoReleaser version to match CI. |
RELEASING.md |
Updates release process documentation to reflect built-in GoReleaser notarization and removes the prior tradeoffs section. |
scripts/sign-darwin.sh |
Deletes the no-longer-needed custom macOS signing hook script. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
The pinned value is the GoReleaser CLI version, not the goreleaser-action version (which is pinned by SHA at v7.0.0). Reword the cross-reference comment to make that distinction explicit.
What
Revert the macOS signing/notarize workaround from #392 now that GoReleaser
v2.15.4 ships a synced
goreleaser/quillwith the TeamIdentifier fix.Closes #393.
Why
GoReleaser v2.15.4 (2026-04-21) bumps
goreleaser/quillto commita259ef5caf05(goreleaser/goreleaser#6577),descended from
c6251429a432("chore: sync with anchore/quill upstream",goreleaser/quill#2). The synced
tree contains the TeamID fix from anchore/quill v0.7.0
(anchore/quill#669) —
quill/sign/code_directory.gonow writes the team identifier and sets
TeamOffseton theCodeDirectoryHeader.With the upstream fix in place, the workaround is redundant. Signing and
notarization can return to a single wait-blocking GoReleaser call instead of a
separate sign-via-quill build hook plus post-publish notarize step. This
eliminates the publish/notarize race window described in the prior tradeoffs
section and shrinks the release workflow significantly.
Changes
.goreleaser.yaml— drop thescripts/sign-darwin.shbuild hook;restore the native
notarize.macosblock with an env-gatedenabledtemplate (local dev with no secrets stays signing-free; CI's hard
Verify macOS signing secretsstep still fails fast when secrets are missing).scripts/sign-darwin.sh— deleted..github/workflows/release.yml— remove the quill install, credentialprep, separate notarize, and credential cleanup steps; restore
MACOS_*envvars on the GoReleaser step; drop
--skip=notarize; bump GoReleaser actionv2.14.1→v2.15.4..mise.toml— pingoreleaser = "2.15.4"so localmake test-releasematches CI; sync comment cross-references the workflow pin.
RELEASING.md— rewrite the macOS signing bullet; drop the "macOSsigning tradeoffs" section.
The
macos-verifypost-release job (TeamIdentifier + hardened-runtime +spctlassertions) is signing-method-agnostic and stays in place as ongoingCI coverage.
Testing
goreleaser checkagainst pinned v2.15.4 — config validmake test-release(snapshot withMACOS_*cleared) — notarize pipecorrectly skipped (
reason=disabled), confirming theenabledtemplategate
bin/cigreen (formatting, vet, lint, unit, 305 BATS e2e, naming,surface, skill drift, bare-group convention, SDK provenance)
Run GoReleaseremitsSuccessfully notarizedper darwin binary,macos-verifymatrix(amd64 + arm64) passes the TeamIdentifier (
2WNYUYRS7G) and hardened-runtimeassertions, and the warn-only
spctlstep showsaccepted/Notarized Developer IDin its logcodesign -dv --verbose=4on a downloaded prerelease binaryshows
TeamIdentifier=2WNYUYRS7Gandflags=0x10000(runtime)Summary by cubic
Reverts the macOS signing workaround and returns to
goreleaser’s built‑in sign + notarize flow now that v2.15.4 embedsgoreleaser/quillwith the TeamIdentifier fix. Removes the post‑publish notarize step and simplifies the release workflow.Dependencies
goreleaserto v2.15.4 in the action; pin the same CLI version in.mise.tomland clarify the sync comment refers to the CLI version (not the action).Refactors
scripts/sign-darwin.shand its build hook in.goreleaser.yaml.notarize.macoswith env-gatedenabled; sign via P12, notarize with issuer/key IDs,wait: true(20m timeout).release.yml: drop quill install and separate notarize; restoreMACOS_*env; remove--skip=notarize.RELEASING.mdto reflect the built-in flow; remove the tradeoffs section.macos-verifypost-release checks for TeamIdentifier, hardened runtime, and notarization.Written for commit 682fc09. Summary will update on new commits.