Make Quarkus default builder image multi-arch (follow-up to #3515/#3665)
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 365
- Forks
- 223
- Avg merge
- 2d 3h
- Merged PRs (30d)
- 25
Description
Background
#3665 (merged 2026-05-09) fixed the immediate symptom of #3515 — remote Quarkus builds failing on s390x/ppc64le clusters — but the root cause remained: DefaultBuilderImages["quarkus"] is hardcoded to gcr.io/paketo-buildpacks/builder:base, which only ships an amd64 manifest. Without a regression test, an equivalent issue can recur silently the next time a non-amd64 architecture surfaces.
Analysis (credit @dikshant182004)
When a non-amd64 cluster (s390x, ppc64le) selects the current Quarkus default builder, the OS attempts to execute an amd64 binary on a non-amd64 chip and immediately throws exec format error. The DefaultBuilderImages map in pkg/buildpacks/ selects the builder image purely by language, with no platform awareness.
Proposed solution
-
Swap the Quarkus default builder to a multi-arch image (
amd64,s390x,ppc64le,arm64).DefaultBuilderImages = map[string]string{ // ... "quarkus": "paketobuildpacks/builder-ubi8-base", // candidate — multi-arch UBI }Open question:
paketobuildpacks/builder-ubi8-basevs an internalquay.io/boson/...image. I'll surface this with the team and follow up before implementation starts. -
Architecture-mismatch warning in
BuilderImage()— if a user has manually pinned an amd64-only builder in theirfunc.yamland tries to build on s390x/ppc64le, emit a clear actionable error instead of the rawexec format error. -
Regression test for builder-image selection on non-amd64 platforms so this can't recur silently.
Verification
Should be verified end-to-end on an actual s390x or ppc64le cluster. Hardware-access question is open with @Itx-Psycho0 / @dikshant182004; if neither has access I'll arrange something on our side.
Related
- #3515 — original report (closed by #3665, partial workaround)
- #3665 — the targeted fix that closed #3515
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the DefaultBuilderImages map in pkg/buildpacks/ and the BuilderImage() entry point. Confirm the multi-arch builder choice with the team, then add the selection regression test and architecture-mismatch handling; done includes end-to-end verification on s390x or ppc64le.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- build-system, cli
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100