Skip to content
🎉 GoReleaser v2.18 is out! with release summaries, preflight checks, OpenTelemetry traces, and more!
Announcing GoReleaser v2.18

Announcing GoReleaser v2.18

August 23, 2026·caarlos0

An observability release: a release summary in GitHub Actions, preflight checks that fail before you build, OpenTelemetry traces, a new Iru Custom Apps publisher, and Go 1.27.

Release summary in GitHub Actions

When GoReleaser runs inside GitHub Actions, it now writes a summary of what your release published to the job summary view, so you can see the outcome of a run without reading its logs.

There is nothing to configure. GoReleaser appends to the file named by the GITHUB_STEP_SUMMARY environment variable, which GitHub Actions sets for every step.

Each notable action becomes one bullet, with a link when there is one:

- Published v1.2.3 to GitHub with 12 assets: https://github.com/user/repo/releases/tag/v1.2.3
- Pushed Docker image `user/foo:v1.2.3`
- Updated homebrew formula `foo.rb` in `user/homebrew-tap`
- Opened pull request to `user/nur` (nixpkg `foo.nix`): https://github.com/user/nur/pull/12
- Pushed `foo` to npm
- Uploaded 8 files to `s3://my-bucket`

An action is only reported after it succeeds, so the summary describes what actually happened, not what was configured. Releases, packages, images, manifests, uploads, and announcements are all covered.

See the documentation for the full list of what gets reported.

Preflight checks

Some releases fail at the very last step, after you already waited for every build, package, and signature — because the token can’t publish, or because the tag is already out there as an immutable release that can’t be updated.

GoReleaser now checks for that up front:

.goreleaser.yaml
release:
  preflight:
    fail_on_error: true

With fail_on_error set, a failed check aborts the release before building. When it’s false (the default), a failed check only logs a warning, so nothing changes for existing configurations until you opt in.

See the documentation for more details.

Iru Custom Apps

GoReleaser can now publish artifacts as Custom Apps to iru.com (formerly Kandji) endpoint management, making them available for deployment to your managed Macs.

.goreleaser.yaml
iru:
  url: https://mycompany.api.kandji.io
  name: "My App {{ .Version }}"
  install_type: package

Custom Apps are a macOS-only library item: the supported install types (package, zip, image) correspond to .pkg, .zip, and .dmg files, and the pre/post install scripts run on the target Mac. GoReleaser can create a new Custom App on every release, or update an existing one through library_item_id.

Thanks to Wim Wenigerkind for contributing this.

See the documentation for the full configuration reference.

winget locale manifests

winget entries can now publish additional locale manifests alongside the default one:

.goreleaser.yaml
winget:
  - name: foo
    publisher: myself
    short_description: "My amazing project"
    license: MIT
    repository:
      owner: myself
      name: winget-pkgs
    additional_locales:
      - locale: pt-BR
        short_description: "Meu projeto incrível"
      - locale: fr-FR
        short_description: "Mon projet incroyable"

Every field the default locale accepts can be overridden per locale, and anything you leave out falls back to the default locale’s value.

Thanks to Mohammed Anasuddin Zaid for contributing this.

See the documentation for more details.

OpenTelemetry traces

This feature is exclusively available with the GoReleaser Pro Enterprise plan.

GoReleaser can now export OpenTelemetry traces of your releases, so you can see where the time goes: which pipes are slow, which builds dominate, which upload is flaky, and how it all trends over time.

.goreleaser.yaml
telemetry:
  enabled: true

Traces are always sent to your collector, configured through the standard OTEL_* environment variables. GoReleaser never sends anything to us.

export OTEL_EXPORTER_OTLP_ENDPOINT="https://otel.mycompany.com"
export OTEL_EXPORTER_OTLP_HEADERS="authorization=******"
goreleaser release

It is opt-in on purpose: without the configuration option, GoReleaser would start talking to the network whenever a CI runner happens to have OTEL_* variables set for other tooling. You have to ask for it.

See the documentation for the full reference.

Other updates

  • dependencies: Go 1.27
  • scm: pull request creation can use a different auth token, thanks to Emily Curry
  • ko: local_domain, base_image, and repositories support templating, thanks to Manuel Rüger
  • winget: count arm64 in the duplicate-archive check; fall back to the default description in additional locales
  • builds: node windows targets get their .exe extension back
  • nfpm: overrides no longer ignore package_name, epoch, release, and prerelease; record the conventional extension instead of the format name; don’t set the deb arch variant for goamd64 v1
  • srpm: the documented RPM fields are actually configurable now
  • homebrew: emit casks that pass brew style; a formula or cask without a repository no longer stops the ones after it
  • a disabled or skipped flatpak, snap, nix, winget, krew, milestone, or upload entry no longer stops the ones after it
  • snapcraft: assumes, hooks, and plugs are no longer dropped when apps is omitted
  • blob: honor s3_force_path_style without a custom endpoint
  • aur: expand description templates before escaping quotes
  • chocolatey: error on multiple archives for the same platform
  • changelog: a commit matching two include filters is no longer listed twice
  • sign: artifacts: none no longer masks real signing failures
  • notarize: cap the macOS notarization timeout at 20m
  • templates: register the documented join function; tag templates no longer strip apostrophes from the message
  • mcp: mcp.disable is read now, as documented
  • docker: gpg-agent is included in the image; fixed dockers_v2 annotation scopes
  • security: go-openapi/spec and go-openapi/validate updates

Other news

  • GoReleaser now has ~16.0k stars and 495 contributors! Thanks, everyone!
  • You can follow release updates on our Telegram channel.
  • nFPM had new releases as well, check it out.

Download

You can install or upgrade using your favorite package manager, or see the full release notes and download the pre-compiled binaries from GitHub:

Install v2.18.0 (OSS) v2.18.0 (Pro)

Helping out

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.

Get the Pro license Sponsor the project

Last updated on