Skip to content

build: upgrade goreleaser, fix config - #930

Merged
imiric merged 3 commits into
masterfrom
imiric/sc-203018/build/upgrade-goreleaser
Oct 13, 2026
Merged

imiric merged 3 commits into
masterfrom
imiric/sc-203018/build/upgrade-goreleaser

Conversation

@imiric

@imiric imiric commented Oct 12, 2026 •

Copy link
Copy Markdown
Member

Description

This upgrades go.mk to v2.0.7, and indirectly goreleaser to v2.18.3, which is needed to simplify the publishing of arm64 OCI images, as explained in exoscale/go.mk#53.

Since the current v2.10.2 version, some goreleaser features were deprecated, and the configuration structure was substantially changed. I did my best to try to port these over to the new structure, but the published artifacts should be tested to confirm there were no issues.

Part of sc-203018

Checklist

(For exoscale contributors)

  • Changelog updated (under Unreleased block, and add the Pull Request #number for each bit you add to the CHANGELOG.md)
  • Testing

Testing

I confirmed locally that the new config is valid with goreleaser v2.18.3:

root@fde01a25ad2f:/app# goreleaser --version
  ____       ____      _
 / ___| ___ |  _ \ ___| | ___  __ _ ___  ___ _ __
| |  _ / _ \| |_) / _ \ |/ _ \/ _` / __|/ _ \ '__|
| |_| | (_) |  _ <  __/ |  __/ (_| \__ \  __/ |
 \____|\___/|_| \_\___|_|\___|\__,_|___/\___|_|
goreleaser: Release engineering, simplified.
https://goreleaser.com

GitVersion:    2.18.3
GitCommit:     1942d44355492f44cd3774c57bd3c27fe544dfe9
GitTreeState:  false
BuildDate:     2026-10-08T13:16:20Z
BuiltBy:       goreleaser
GoVersion:     go1.27.1
Compiler:      gc
ModuleSum:     h1:QZyKdRAHzffgURxr0cODOjAE0Ywma7p43/fbwCi0mjs=
Platform:      linux/amd64

root@fde01a25ad2f:/app# goreleaser check
  • checking                                  path=.goreleaser.yml
  • 1 configuration file(s) validated
  • thanks for using GoReleaser!

The actual test will have to be done in the release pipeline. Maybe we can trigger it on this branch?

I also tested build and release --skip=publish:

Expand
$ goreleaser build
  • loading environment variables
  • getting and validating git state
    • using tags                                     previous=v1.102.1 current=v1.103.0
  • parsing tag
  • setting defaults
  • running before hooks
    • running                                        hook=make manpages completions
      • took: 22s
      • took: 22s
  • ensuring distribution directory
  • setting up metadata
  • writing release metadata
  • loading go mod information
  • build prerequisites
  • building binaries
    • building                                       paths=. binaries=exo target=linux_arm64_v8.0
    • building                                       paths=. binaries=exo target=darwin_amd64_v1
    • building                                       paths=. binaries=exo target=linux_arm_6
    • building                                       paths=. binaries=exo target=linux_amd64_v1
    • building                                       paths=. binaries=exo target=darwin_arm64_v8.0
    • building                                       paths=. binaries=exo target=linux_arm_7
    • building                                       paths=. binaries=exo target=windows_amd64_v1
    • building                                       paths=. binaries=exo target=windows_arm64_v8.0
    • building                                       paths=. binaries=exo target=openbsd_amd64_v1
      • took: 2m11s
  • universal binaries
    • creating from 2 binaries                       id=exoscale-cli binary=dist/exoscale-cli_darwin_all/exo
  • writing artifacts metadata
  • build succeeded after 2m33s
  • thanks for using GoReleaser!

$ goreleaser release --skip=publish
  • starting release
  • skipping announce and publish...
  • loading environment variables
  • getting and validating git state
    • using tags                                     previous=v1.102.1 current=v1.103.0
  • parsing tag
  • setting defaults
  • running before hooks
    • running                                        hook=make manpages completions
      • took: 9s
  • ensuring distribution directory
  • setting up metadata
  • writing release metadata
  • loading go mod information
  • build prerequisites
  • building binaries
    • building                                       paths=. binaries=exo target=darwin_arm64_v8.0
    • building                                       paths=. binaries=exo target=linux_amd64_v1
    • building                                       paths=. binaries=exo target=linux_arm_6
    • building                                       paths=. binaries=exo target=windows_amd64_v1
    • building                                       paths=. binaries=exo target=linux_arm64_v8.0
    • building                                       paths=. binaries=exo target=windows_arm64_v8.0
    • building                                       paths=. binaries=exo target=darwin_amd64_v1
    • building                                       paths=. binaries=exo target=linux_arm_7
    • building                                       paths=. binaries=exo target=openbsd_amd64_v1
  • universal binaries
    • creating from 2 binaries                       id=exoscale-cli binary=dist/exoscale-cli_darwin_all/exo
  • generating changelog
  • archives
    • archiving                                      name=dist/exoscale-cli_1.103.0_linux_armv6.tar.gz
    • archiving                                      name=dist/exoscale-cli_1.103.0_windows_arm64.zip
    • archiving                                      name=dist/exoscale-cli_1.103.0_linux_armv7.tar.gz
    • archiving                                      name=dist/exoscale-cli_1.103.0_windows_amd64.zip
    • archiving                                      name=dist/exoscale-cli_1.103.0_openbsd_amd64.tar.gz
    • archiving                                      name=dist/exoscale-cli_1.103.0_darwin_all.tar.gz
    • archiving                                      name=dist/exoscale-cli_1.103.0_linux_arm64.tar.gz
    • archiving                                      name=dist/exoscale-cli_1.103.0_linux_amd64.tar.gz
  • creating source archive
    • creating source archive                        file=dist/exoscale-cli_1.103.0.tar.gz
  • linux packages
    • creating                                       package=exoscale-cli format=rpm arch=arm7 file=dist/exoscale-cli_1.103.0_linux_armv7.rpm
    • creating                                       package=exoscale-cli format=rpm arch=arm64v8.0 file=dist/exoscale-cli_1.103.0_linux_arm64.rpm
    • creating                                       package=exoscale-cli format=deb arch=arm6 file=dist/exoscale-cli_1.103.0_linux_armv6.deb
    • creating                                       package=exoscale-cli format=deb arch=arm64v8.0 file=dist/exoscale-cli_1.103.0_linux_arm64.deb
    • creating                                       package=exoscale-cli format=rpm arch=amd64v1 file=dist/exoscale-cli_1.103.0_linux_amd64.rpm
    • creating                                       package=exoscale-cli format=deb arch=arm7 file=dist/exoscale-cli_1.103.0_linux_armv7.deb
    • creating                                       package=exoscale-cli format=deb arch=amd64v1 file=dist/exoscale-cli_1.103.0_linux_amd64.deb
    • creating                                       package=exoscale-cli format=rpm arch=arm6 file=dist/exoscale-cli_1.103.0_linux_armv6.rpm
  • calculating checksums
  • signing artifacts
    • signing                                        cmd=gpg artifact=exoscale-cli_1.103.0_linux_arm64.tar.gz signature=dist/exoscale-cli_1.103.0_linux_arm64.tar.gz.sig
  ⨯ release failed after 24s                         error=exit status 2 message=could not sign artifact cmd=gpg artifact=exoscale-cli_1.103.0_linux_arm64.tar.gz
    output=
    │ gpg: all values passed to '--default-key' ignored
    │ gpg: no default secret key: No secret key
    │ gpg: signing failed: No secret key

build passed, but it doesn't package anything, and release fails because of a missing GPG key, and I don't think it would test the Homebrew or OCI image publishing paths either. So we have to YOLO this and if it breaks the release, then we will fix it in the next one...

This one upgrades the goreleaser version, which we need for simplifying
publishing of arm64 OCI images.
Our current goreleaser config uses features that were deprecated in
newer versions, related to [Homebrew][1] and [OCI image][2] publishing.

I did my best to try to port these over to the new config, but the
published artifacts should be tested to confirm there were no issues.

I did confirm locally that the new config is valid according to the
upgraded goreleaser version:
```sh
root@fde01a25ad2f:/app# goreleaser --version
  ____       ____      _
 / ___| ___ |  _ \ ___| | ___  __ _ ___  ___ _ __
| |  _ / _ \| |_) / _ \ |/ _ \/ _` / __|/ _ \ '__|
| |_| | (_) |  _ <  __/ |  __/ (_| \__ \  __/ |
 \____|\___/|_| \_\___|_|\___|\__,_|___/\___|_|
goreleaser: Release engineering, simplified.
https://goreleaser.com

GitVersion:    2.18.3
GitCommit:     1942d44355492f44cd3774c57bd3c27fe544dfe9
GitTreeState:  false
BuildDate:     2026-10-08T13:16:20Z
BuiltBy:       goreleaser
GoVersion:     go1.27.1
Compiler:      gc
ModuleSum:     h1:QZyKdRAHzffgURxr0cODOjAE0Ywma7p43/fbwCi0mjs=
Platform:      linux/amd64

root@fde01a25ad2f:/app# goreleaser check
  • checking                                  path=.goreleaser.yml
  • 1 configuration file(s) validated
  • thanks for using GoReleaser!
```

[1]: https://goreleaser.com/resources/deprecations/#brews

[2]: https://goreleaser.com/resources/deprecations/#dockers
@imiric
imiric requested a review from a team October 12, 2026 14:08
@imiric

imiric commented Oct 13, 2026

Copy link
Copy Markdown
Member Author

I did some more local tests and updated the description. I'll make a release when this is merged.

The govulncheck failure is unrelated, and I'll fix it in a separate PR.

@imiric
imiric merged commit 48f9716 into master Oct 13, 2026
6 of 7 checks passed
@imiric
imiric deleted the imiric/sc-203018/build/upgrade-goreleaser branch October 13, 2026 14:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants