Skip to content

Pin the Paketo builder image used by bootBuildImage - #990

Merged
Goosetaf merged 1 commit into
mainfrom
ci/pin-paketo-builder
Oct 25, 2026
Merged

Goosetaf merged 1 commit into
mainfrom
ci/pin-paketo-builder

Conversation

@Portals

@Portals Portals commented Oct 23, 2026

Copy link
Copy Markdown
Member

Root cause

bootBuildImage in app/build.gradle did not set a builder, so Spring Boot used paketobuildpacks/builder-noble-java-tiny:latest. On 2026-10-23 at 14:50 UTC Paketo republished that tag as an arm64-only image. The amd64 GitHub runner then pulled the arm64 run image and the lifecycle binary failed with:

> Pulling run image 'docker.io/paketobuildpacks/ubuntu-noble-run-tiny:0.0.150' for platform 'linux/arm64'
[creator]     exec /cnb/lifecycle/creator: exec format error
> Task :app:bootBuildImage FAILED

Every Build and Test run in the repository fails at the Build Docker image step until that tag is fixed, for example 39979427066 on #989 and its rerun. Main's last green run (39934107380 at 09:44 UTC) pulled the previous amd64 digest of the same tag. The versioned tags on Docker Hub, including 0.0.200 pushed at the same time as the broken latest, are still multi-arch.

What changed

  • builder = "paketobuildpacks/builder-noble-java-tiny:0.0.200" on the bootBuildImage task.

Pinning means a floating upstream tag can no longer break the build, and builder upgrades become a deliberate, reviewable change. There is no Dependabot or Renovate config in the repo, so the version will need an occasional manual bump.

Verification

  • ./gradlew :app:help --task bootBuildImage configures the task with the pinned builder.
  • The Build Docker image step on this PR's CI run exercises the pin on the amd64 runner.

🤖 Generated with Claude Code

bootBuildImage defaulted to paketobuildpacks/builder-noble-java-tiny:latest.
On 2026-10-23 Paketo republished that tag as an arm64-only image, so the
amd64 CI runner pulled an arm64 run image and the lifecycle failed with
"exec /cnb/lifecycle/creator: exec format error", breaking every build
in the repository. The versioned tags are still multi-arch.

Pin the builder to the current version so a floating tag can no longer
break the build. Bump the version deliberately when a newer builder is
wanted.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The single-line configuration change addresses the documented builder failure without introducing any identified blocking issues.

No open issues 🎉

What changed in this PR

This PR configures Gamma’s container-image build to use a specific Paketo builder release instead of the default latest tag, addressing the reported architecture mismatch on amd64 CI runners.

Changes:

  • Pins the bootBuildImage builder to paketobuildpacks/builder-noble-java-tiny:0.0.200.
  • Preserves the existing Java 25 configuration.
File Description
app/​build.gradle Pins the Paketo builder used by bootBuildImage.

Review effort: Balanced

@Portals

Portals commented Oct 24, 2026

Copy link
Copy Markdown
Member Author

@Goosetaf can you take a look at this?

@Goosetaf Goosetaf left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, should have checked this earlier.

Good change!

@Goosetaf
Goosetaf merged commit 6f59b05 into main Oct 25, 2026
3 checks passed
@Goosetaf
Goosetaf deleted the ci/pin-paketo-builder branch October 25, 2026 10:13
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