www/content/blog/goreleaser-v2.18.md
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.
<!--more-->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.
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: 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.
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: 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 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.
{{< g_featenterprise >}}
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: 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.
local_domain, base_image, and repositories support templating, thanks to Manuel Rügerarm64 in the duplicate-archive check; fall back to the default description in additional locales.exe extension backpackage_name, epoch, release, and prerelease; record the conventional extension instead of the format name; don't set the deb arch variant for goamd64 v1brew style; a formula or cask without a repository no longer stops the ones after itassumes, hooks, and plugs are no longer dropped when apps is omitteds3_force_path_style without a custom endpointartifacts: none no longer masks real signing failuresjoin function; tag templates no longer strip apostrophes from the messagemcp.disable is read now, as documentedgpg-agent is included in the image; fixed dockers_v2 annotation scopesgo-openapi/spec and go-openapi/validate updatesYou can install or upgrade using your favorite package manager, or see the full release notes and download the pre-compiled binaries from GitHub:
{{< g_button href="https://goreleaser.com/install" label="Install" icon="download" primary="true" >}} {{< g_button href="https://github.com/goreleaser/goreleaser/releases/tag/v2.18.0" label="v2.18.0 (OSS)" icon="github" primary="false" >}} {{< g_button href="https://github.com/goreleaser/goreleaser-pro/releases/tag/v2.18.0" label="v2.18.0 (Pro)" icon="github" primary="false" >}}
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.
{{< g_button href="https://goreleaser.com/pro" label="Get the Pro license" icon="pro" primary="true" >}} {{< g_button href="https://goreleaser.com/sponsors" label="Sponsor the project" icon="sponsor" primary="false" >}}