Announcing GoReleaser v2.15
This version a big one for Linux packaging - Flatpak bundles and Source RPMs land in the same …
Happy 2026! The first release of the year is here, and it is packed with goodies!
GoReleaser was one of the projects participating in session 3 of the GitHub Secure Open Source Fund.
You can read the announcement here.

If you need to release in an air-gapped environment, you may now export your key and validate it offline:
goreleaser license-export -k your-key -o goreleaser.key
goreleaser license-verify -k goreleaser.key
The license will be valid for at most 3 months, or your next billing cycle, whichever happens first.
As you may have noticed, the $GORELEASER_KEY and the --key flag can now also
point to a file instead of plain text.
Note This feature is only available in the Business and Enterprise plans.
On nightly builds, you may now use github, gitlab, and gitea changelog
implementations (instead of rolling back to git), which should help you have
more similar-to-production changelogs.
You can now also include co-authors in the changelogs:
changelog:
format: "{{ .SHA }}: {{ .Message }}{{ if .Logins }} ({{ .Logins | englishJoin }}){{ end }}"
.pkg installersGoReleaser Pro can now create, sign, and notarize .pkg installers for macOS!

A minimal example:
pkgs:
- identifier: org.example.foo
See the documentation for more details.
You can also create Windows installers with the Nullsoft Scriptable Install System (NSIS).
Example:
nsis:
- script: ./path/to/script.nsis
You will, of course, need to create your own .nsis script file.
Maybe we add a sensible default in the future, but for now, this is a
requirement.
You can of course use the example provided in the
documentation and it should just
work.
On the same note, MSI installers can
now use hooks as well.
The next version of the Docker feature
has a couple of improvements, like allowing to template the platforms field,
better support for daemonless snapshot builds, and warning the user if it looks
like they’re rebuilding the binaries inside the Dockerfile.
Continuing our efforts to replace the old, hacky brews with Homebrew
Casks, we now allow users to glob manpages, as well as fix the Cask
generation for archives that use wrap_in_directory.
See the documentation and migration guide.
GoReleaser will now detect if the binary is dynamically linked and better
generate Nix derivations based on that (namely, use autoPatchelfHook,
stdenv.cc, etc).

We made some improvements to our internal gerrors package, which should allow
us to give better, more detailed error outputs.
And speaking of outputs, all relevant exec.Command calls now have their
output go through a redactor, which will replace secret-looking environment
variables with their keys in the output.
We also made improvements to our logging library, so when you use --verbose,
command outputs look a bit better.
The furies key always sounded weird to me, so it will be renamed to gemfury.
Going forward, we will make all the keys that refer to a specific technology
singular to prevent these weird readings.
We also updated our GitHub Action. It now works on Node 24 and was converted to ESM.
See the complete release notes.
GOAMD64ARCHVARIANT for .debformatter optionenglishJoin function${pkgver} in the SRCINFO filebuildx versionsYou can install or upgrade using your favorite package manager, or see the full release notes and download the pre-compiled binaries from GitHub:
You can help by reporting issues, contributing features, documentation improvements, and bug fixes. You can also sponsor the project, or get a GoReleaser Pro license.