Skip to content

Add multi-arch support with manifest lists - #155

Merged
hyness merged 1 commit into
mainfrom
test-arm-builds
Apr 4, 2026
Merged

Add multi-arch support with manifest lists#155
hyness merged 1 commit into
mainfrom
test-arm-builds

Conversation

@hyness

@hyness hyness commented Apr 4, 2026

Copy link
Copy Markdown
Owner

Summary

  • Build both x64 and arm OCI images for all JVM variants (jre17, jdk17, jre21, jdk21)
  • Create Docker manifest lists so consumers get the right image automatically via a single tag
  • CI integration tests run on both architectures (28 jobs: 14 backends × 2 archs)
  • Fix ARM test failures by overriding Testcontainers socat image to multi-arch version
  • Pin localstack to 3.8.1 (newer versions require authentication)
  • Fix missing quote in generate-docker-tags.yml BUILD_VERSION generation

How it works

  1. Both x64 and arm images are built with arch-specific tags (e.g., 5.0.1-jre17-x64, 5.0.1-jre17-arm)
  2. A manifest list is created at the consumer tag (e.g., 5.0.1-jre17) pointing to both arch images
  3. Docker automatically resolves the correct image when pulling the consumer tag
  4. CI tests run on both architectures, each pulling its matching arch-specific tag

Changes

  • build.gradle.kts — Read DOCKER_TAGS from env var; support --imagePlatform CLI flag
  • .github/workflows/ci.yml — Build both archs, test on both archs with arch-specific tags
  • .github/workflows/release.yml — Build both archs, create manifest lists for consumer tags
  • .github/workflows/build-and-deploy-image.yml — Pass --imagePlatform and append arch to tags
  • .github/workflows/generate-docker-tags.yml — Fix missing quote in BUILD_VERSION
  • examples/aws/*/compose.yml — Pin localstack to 3.8.1

Co-authored-by: Alex Kurdyukov akurdyukov@users.noreply.github.com

@hyness
hyness force-pushed the test-arm-builds branch 10 times, most recently from 4a27cc4 to 79013fc Compare April 4, 2026 21:57
- Use imageRegistry property to construct image name in build script
- Use --imagePlatform CLI flag for arch targeting
- Build both x64 and arm images with arch-specific tags
- Create manifest lists for consumer-facing tags
- Simplify integration tests to single matrix (14 jobs instead of 28)
- Fix missing quote in generate-docker-tags.yml BUILD_VERSION
- Pin localstack to 3.8.1 (auth required in newer versions)
- Override Testcontainers socat image for ARM compatibility

Co-authored-by: Alex Kurdyukov <akurdyukov@users.noreply.github.com>
@hyness
hyness force-pushed the test-arm-builds branch from 79013fc to b43b323 Compare April 4, 2026 22:14
@hyness
hyness merged commit 77dad0b into main Apr 4, 2026
35 checks passed
@hyness
hyness deleted the test-arm-builds branch April 4, 2026 22:24
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