Skip to content

chore: migrate goreleaser configs to dockers_v2 and homebrew_casks#5508

Merged
kodiakhq[bot] merged 1 commit into
flipt-io:v2from
costajohnt:chore/fix-goreleaser-deprecations
Mar 9, 2026
Merged

chore: migrate goreleaser configs to dockers_v2 and homebrew_casks#5508
kodiakhq[bot] merged 1 commit into
flipt-io:v2from
costajohnt:chore/fix-goreleaser-deprecations

Conversation

@costajohnt

Copy link
Copy Markdown
Contributor

Summary

  • Replace deprecated dockers + docker_manifests with dockers_v2 in .goreleaser.yml and .goreleaser.nightly.yml
  • Replace deprecated brews with homebrew_casks in .goreleaser.yml

Closes #5503

Changes

Docker (dockers_v2)

The two per-architecture dockers entries and separate docker_manifests entries are consolidated into a single dockers_v2 block. GoReleaser handles per-platform builds and manifest creation internally. The resulting Docker images, tags, and multi-arch manifests are identical:

  • flipt/flipt:v{tag}, flipt/flipt:v{major} (amd64 + arm64 manifests)
  • ghcr.io/flipt-io/flipt:v{tag}, ghcr.io/flipt-io/flipt:v{major} (amd64 + arm64 manifests)
  • Nightly: {version} tag on both registries

OCI labels are preserved via the labels: map (replacing --label= in build_flag_templates).

Homebrew (homebrew_casks)

The brews section is replaced with homebrew_casks. Binary installation uses the cask-native binaries: [flipt] field.

Intentionally dropped (need different approaches in casks):

  • Shell completions — The formula generated these at install time via Utils.popen_read. The cask completions: field requires pre-generated files in the release archive. Could be added as a follow-up by generating completion files during the build and including them in archives.files.
  • Homebrew service definition — The formula's service DSL (launchd) has no direct cask equivalent. The cask service: field references a .service file rather than using a Ruby DSL block.
  • Post-install log directory(var/"log/flipt").mkpath was formula-specific. Could be added via hooks.post.install if needed.

Not changed

  • build/Dockerfile — no changes needed; dockers_v2 handles per-platform binary staging
  • .goreleaser.darwin.yml, .goreleaser.linux.yml — build-only configs with no deprecated sections

Testing

  • YAML syntax validated
  • Verified semantic equivalence of Docker image/tag/manifest output
  • Confirmed template variables (.Tag, .Major, .Version) correctly account for monorepo.tag_prefix: v

@costajohnt
costajohnt marked this pull request as ready for review March 7, 2026 20:23
@costajohnt
costajohnt requested a review from a team as a code owner March 7, 2026 20:23
@dosubot dosubot Bot added the size:L This PR changes 100-499 lines, ignoring generated files. label Mar 7, 2026
@codecov

codecov Bot commented Mar 8, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 60.40%. Comparing base (2152073) to head (e4c25c1).
⚠️ Report is 19 commits behind head on v2.

Additional details and impacted files
@@           Coverage Diff           @@
##               v2    #5508   +/-   ##
=======================================
  Coverage   60.40%   60.40%           
=======================================
  Files         141      141           
  Lines       13995    13995           
=======================================
  Hits         8453     8453           
  Misses       4821     4821           
  Partials      721      721           
Flag Coverage Δ
integrationtests 34.32% <ø> (ø)
unittests 51.53% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Replace deprecated `dockers` + `docker_manifests` with `dockers_v2` in
both `.goreleaser.yml` and `.goreleaser.nightly.yml`. The new config
produces identical multi-arch Docker images and manifests with
significantly less boilerplate.

Replace deprecated `brews` with `homebrew_casks` in `.goreleaser.yml`.
Binary installation uses the cask-native `binaries` field. Shell
completions, the Homebrew service definition, and post_install log
directory creation are dropped — these formula-specific features need
different approaches in casks (e.g. pre-generated completion files in
the archive, launchd plists) and can be added as follow-ups.

Closes #5503

Signed-off-by: John Costa <[email protected]>

@markphelps markphelps left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

lgtm. thank you @costajohnt !!

@markphelps markphelps added the automerge Used by Kodiak bot to automerge PRs label Mar 9, 2026
@kodiakhq
kodiakhq Bot merged commit af4f40e into flipt-io:v2 Mar 9, 2026
28 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

automerge Used by Kodiak bot to automerge PRs size:L This PR changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chore: fix goreleaser deprecation warnings in v1 and v2 release configs

2 participants