Skip to content

Build release docker images on native runners, drop QEMU#46

Open
barnabasbusa wants to merge 1 commit into
masterfrom
bbusa/goreleaser-native-runners
Open

Build release docker images on native runners, drop QEMU#46
barnabasbusa wants to merge 1 commit into
masterfrom
bbusa/goreleaser-native-runners

Conversation

@barnabasbusa

Copy link
Copy Markdown
Contributor

Summary

Removes QEMU from the release pipeline by building the multi-arch docker images on native runners, mirroring ethpandaops/dora's build template.

  • goreleaser.yaml: goreleaser now builds only the binaries + GitHub release. The docker images are built per-arch on native runners — build_amd64_docker_image (ubuntu-latest) and build_arm64_docker_image (ubuntu-24.04-arm) — then build_multiarch_image merges them into the version + latest tags with docker buildx imagetools create. The Set up QEMU step is gone.
  • .goreleaser.yaml: dropped dockers:/docker_manifests: (goreleaser no longer builds images).
  • .goreleaser.Dockerfile removed — release images now build from the main Dockerfile, same as build-dev.yml.
  • docker actions at latest: setup-buildx-action v4.1.0, login-action v4.2.0, goreleaser-action v7.2.2.

Why native runners (not Dockerfile cross-compile or QEMU)

On a native runner the multi-arch base image is pulled for that arch and RUN steps execute natively — no emulation, and no Dockerfile changes needed. QEMU was only required because the old release built the arm64 image on an amd64 runner.

Tags (unchanged from goreleaser output)

  • ethpandaops/rpc-snooper:<version> (leading v stripped)
  • ethpandaops/rpc-snooper:<suffix->latest (e.g. latest, or dencun-latest for a vX.Y.Z-dencun tag)
  • per-arch :<version>-amd64 / :<version>-arm64

Notes

Test plan

  • Push a tag (e.g. vX.Y.Z) and confirm ethpandaops/rpc-snooper:X.Y.Z + :latest are published as multi-arch (amd64+arm64) with no QEMU step in the logs.
  • Confirm a vX.Y.Z-suffix tag publishes :X.Y.Z-suffix + :suffix-latest and the GitHub release is marked prerelease.
  • Confirm the image runs (docker run ethpandaops/rpc-snooper:X.Y.Z --help).

Mirrors the dora build template: goreleaser builds only the binaries and the
GitHub release, and the multi-arch docker images are built on native runners
(amd64 on ubuntu-latest, arm64 on ubuntu-24.04-arm) then merged into the
version + latest tags with buildx imagetools. Removes the last use of QEMU.

- .goreleaser.yaml: drop dockers/docker_manifests; .goreleaser.Dockerfile
  removed (images build from the main Dockerfile, same as build-dev)
- docker actions at latest: setup-buildx-action v4.1.0, login-action v4.2.0,
  goreleaser-action v7.2.2
- image tags preserved: ethpandaops/rpc-snooper:<version> and :<suffix->latest
@barnabasbusa barnabasbusa requested a review from pk910 as a code owner May 29, 2026 14:20
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.

1 participant