Announcing GoReleaser v2.18
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:
release:
preflight:
fail_on_error: trueWith 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.
iru:
url: https://mycompany.api.kandji.io
name: "My App {{ .Version }}"
install_type: packageCustom 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:
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
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.
telemetry:
enabled: trueTraces 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 releaseIt 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, andrepositoriessupport templating, thanks to Manuel Rüger - winget: count
arm64in the duplicate-archive check; fall back to the default description in additional locales - builds: node windows targets get their
.exeextension back - nfpm: overrides no longer ignore
package_name,epoch,release, andprerelease; record the conventional extension instead of the format name; don’t set the deb arch variant forgoamd64v1 - 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, andplugsare no longer dropped whenappsis omitted - blob: honor
s3_force_path_stylewithout 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: noneno longer masks real signing failures - notarize: cap the macOS notarization timeout at 20m
- templates: register the documented
joinfunction; tag templates no longer strip apostrophes from the message - mcp:
mcp.disableis read now, as documented - docker:
gpg-agentis included in the image; fixeddockers_v2annotation scopes - security:
go-openapi/specandgo-openapi/validateupdates
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.