Skip to content

release: Replace deprecated brews config with homebrew_casks - #164

Merged
samir-gandhi merged 2 commits into
mainfrom
release/goreleaser-casks
Oct 20, 2026
Merged

samir-gandhi merged 2 commits into
mainfrom
release/goreleaser-casks

Conversation

@samir-gandhi

Copy link
Copy Markdown
Contributor

Summary

Replaces the deprecated brews section in .goreleaser.yaml with homebrew_casks.

  • goreleaser has soft-deprecated brews since v2.10 and hard-deprecated it since v2.16; the deprecation warning appears in every release run (e.g. the v0.6.0 run). The workflow pins ~> v2, so it always runs the latest goreleaser and will break when brews support is removed.
  • The tap artifact moves from Formula/pingcli-plugin-terraformer.rb to Casks/pingcli-plugin-terraformer.rb (cask directory is the goreleaser default; the old directory: "Formula" is dropped).
  • Adds a post-install hook that strips the macOS com.apple.quarantine xattr via /usr/bin/xattr. The release binaries are not signed/notarized; without this hook Gatekeeper reports the binary as damaged on macOS.
  • skip_upload: auto retained — no cask is published for prerelease tags (e.g. v0.6.1-rc1).
  • Hook uses hooks.post.install (stable through current goreleaser v2.x; install_steps replaces it only from v2.19).

Tests

  • goreleaser check passes locally (v2.16.0) against this exact file.
  • No unit tests exist for release configuration; CI validation is the goreleaser release run on the next tag.

Coordinated change

pingidentity/homebrew-tap#25 adds tap_migrations.json so existing formula installs migrate to the cask on brew update.

Ordering / rollout

  1. This PR merges and the next non-prerelease tag publishes the cask to the tap.
  2. homebrew-tap#25 merges after that release (migration entry must not land before the cask exists).
  3. Follow-up PR to the tap deletes the stale Formula/pingcli-plugin-terraformer.rb.

User experience

  • Install command unchanged; existing formula installs migrate transparently via tap_migrations.json.
  • Binary relocates to the Caskroom but is symlinked into $(brew --prefix)/bin — PATH unaffected.
  • Changelog note: worth a customer-facing line that installs migrate from formula to cask on upgrade.

Breaking changes

None. Install and upgrade paths keep working without user action.

🤖 Generated with Claude Code

samir-gandhi and others added 2 commits October 20, 2026 10:43
goreleaser deprecated 'brews' (soft-deprecated v2.10, hard-deprecated
v2.16) in favour of 'homebrew_casks'. This publishes the tap artifact
as a cask in Casks/ instead of a formula in Formula/.

A post-install hook strips the macOS quarantine xattr, as the binaries
are not signed/notarized; without it Gatekeeper reports the binary as
damaged.

Coordinated with pingidentity/homebrew-tap#25, which adds the
tap_migrations.json entry so existing formula installs migrate to the
cask on 'brew update'. That PR must merge after the first release with
this change.

Co-Authored-By: Claude Code <noreply@anthropic.com>
Co-Authored-By: Claude Code <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

Regression Test Results

Matrix Entry Status Breaking Acceptable

✅ No regressions detected

All export configurations produced compatible output.


Generated by regression workflow • View run

@github-actions

Copy link
Copy Markdown

Regression Test Results

Matrix Entry Status Breaking Acceptable
default-hcl ✅ PASS 0 0
default-tfjson ✅ PASS 0 0
hcl-include-all ✅ PASS 0 0
hcl-skip-deps ✅ PASS 0 0
tfjson-skip-deps ✅ PASS 0 0

✅ No regressions detected

All export configurations produced compatible output.


Generated by regression workflow • View run

@samir-gandhi
samir-gandhi merged commit da68199 into main Oct 20, 2026
8 checks passed
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.

1 participant