ci: migrate dockers/docker_manifests to dockers_v2 - #115
Merged
Conversation
goreleaser reports dockers and docker_manifests as being phased out in favour of dockers_v2, and 'goreleaser check' fails on the config because of it. dockers_v2 builds one multi-platform image per registry instead of per-arch images plus four manifests, which collapses six blocks into two. Dockerfile.release needs the platform-aware COPY because dockers_v2 stages each platform's binary under <os>/<arch>/ in the build context rather than at its root. Image signing is unaffected: docker_signs with 'artifacts: manifests' matches artifact.DockerImageV2 as well as artifact.DockerManifest, so the existing block keeps signing the published images. Consumers pinning the per-arch tags (:VERSION-amd64, :VERSION-arm64) are affected -- those are no longer published, since a single multi-platform image is pushed under :VERSION and :latest instead.
Owner
Author
|
Audited for the docs caveat noted in the description: no docs, workflows, or site content reference arch-suffixed image tags ( |
This was referenced Aug 3, 2026
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
goreleaser checkcurrently fails on our config, and has been printing this at the top of every release run:dockers_v2builds one multi-platform image per registry rather than per-arch images plus manifests, which collapses twodockersblocks + fourdocker_manifestsblocks into twodockers_v2blocks — 87 lines of config down to 37.Dockerfile.releasechanges alongside it:dockers_v2stages each platform's binary under<os>/<arch>/in the build context (makeContextin goreleaser'sinternal/pipe/docker/v2), not at the root, so theCOPYhas to be platform-aware via buildx'sTARGETPLATFORM.The per-arch tags are no longer published.
:VERSION-amd64and:VERSION-arm64existed only as inputs to the manifest step;dockers_v2pushes a single multi-platform image instead. After this lands, the published tags are:ghcr.io/sergiught/openfga-cli:VERSION…:VERSION-amd64ghcr.io/sergiught/openfga-cli:latest…:VERSION-arm64docker.iodocker.iodocker pullof:VERSIONor:latestresolves the right architecture as before, so only someone explicitly pinning an arch-suffixed tag is affected. (The-amd64/-arm64suffixes still appear in snapshot builds — buildx can't--loada manifest, so goreleaser splits per platform there. That's snapshot-only and doesn't reach a release.)🔍 Signing is unaffected — verified in goreleaser's source
This was the risk worth checking, since silently losing image signatures is the same failure class as the missing attestations in #114.
dockers_v2registers a new artifact type,artifact.DockerImageV2, rather thanDockerManifest— butinternal/pipe/sign/sign_docker.goincludes it in themanifestsfilter:So the existing
docker_signsblock keeps signing the published images with no change.🏷 Type of change
🔗 Related issues
Second in the sequence started by #114. Next:
brews→homebrew_casks, thengoreleaser checkin CI (still red until that lands —brewsis the last remaining deprecation).✅ How to verify
goreleaser check # dockers warning gone; only the brews one remains goreleaser release --snapshot --clean --skip=sbom,nfpm,aur,homebrew,signVerified locally with goreleaser v2.17.0:
Both registry blocks build, the arm64 image really is
arm64(so theTARGETPLATFORMCOPY selects the right binary), OCI labels carry over, and theextra_filesLICENSE still lands.Not verifiable locally: signing and manifest push only happen on a real publish. The signing behaviour is argued from goreleaser's source above rather than observed — worth a
cosign verify ghcr.io/sergiught/openfga-cli:VERSIONafter the first release on this config.📋 Checklist
make checkpasses locally — n/a, no Go code touchedIf any docs reference
:VERSION-amd64style tags, they need updating — I did not audit for that in this PR.