release: fix multi-arch Docker builds (manifest list export error)#828
Merged
javuto merged 1 commit intoMay 19, 2026
Merged
Conversation
…i-arch tags
The default Docker exporter does not support exporting manifest lists
from a single multi-platform buildx invocation. Every tagged release
since v0.4.8 failed at the docker step with:
docker exporter does not currently support exporting manifest lists
Fix: build each component as two separate per-arch images
(e.g. osctrl-tls:<version>-amd64, osctrl-tls:<version>-arm64) and
combine them into multi-arch manifest lists via the docker_manifests
section. `docker pull <image>:<tag>` now resolves to the correct
architecture automatically.
skip_push on docker_manifests is gated by IsSnapshot so snapshot
builds still work without pushing.
2 tasks
Collaborator
Author
|
The main CI run triggered by this merge (26082810103) got past the manifest-list error but hit a second bug: the arm64 docker builds fail with Root cause: The Dockerfiles declare Fix in #839 — adds |
javuto
pushed a commit
that referenced
this pull request
May 19, 2026
The Dockerfiles use ARG GOARCH=amd64 as default. The arm64 goreleaser blocks set --platform=linux/arm64 but never override the GOARCH arg, so the COPY instruction looks for the amd64 binary in an arm64 build context and fails with "not found". Fixes the CI failure surfaced after #828 landed — the manifest-list fix let the build proceed far enough to hit this second bug.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Every tagged release since v0.4.8 fails at the Docker step with:
The root cause is that a single
buildxinvocation with--platform=linux/amd64,linux/arm64tries to export a manifest list, which the default Docker exporter does not support.Fix: split each component's
dockers:block into two per-arch entries (e.g.osctrl-tls:<version>-amd64andosctrl-tls:<version>-arm64), then combine them viadocker_manifests:into the final multi-arch tags (<version>andlatest).docker pull <image>:<tag>now resolves the correct arch automatically.skip_pushon manifest entries is gated by{{ .IsSnapshot }}so snapshot builds still work without pushing.Changes
.goreleaser.yml: 4 multi-platform docker blocks → 8 per-arch blocks + 8docker_manifestsentriesTest plan
goreleaser checkvalidates the config