Provide Docker images for multiple architectures
Several SoSy-Lab projects inherit the CI pipeline configuration from java-project-template, which provides essential setup files and prebuilt Docker images for the default architecture (x64). However, these images currently lack support for other architectures, limiting portability across different environments, like arm64.
To address this, we aim to build multi-architecture Docker images using a manifest list, which allows a single image tag to reference multiple architecture-specific variants. This ensures that projects inheriting from java-project-template can seamlessly pull the correct image for their platform, whether x64, arm64, and maybe others, without requiring separate tags or additional configuration.
Benefits of Multi-Architecture Support:
- Seamless Inheritance: Downstream projects can continue inheriting CI configurations without modification, regardless of their target architecture.
- Unified Image Management: A single registry tag can serve multiple platforms, simplifying versioning and updates.
- Broader Compatibility: Enables deployment across diverse environments, including ARM-based cloud instances and embedded systems.
Goal of this Issue:
- Provide multi-architecture Docker images in the registry.
- Develop build scripts that run on SoSy-Lab’s infrastructure.
- Test the approach on a dependent project, such as JavaSMT.
Relevant Links:
- CI for building docker images: https://gitlab.com/sosy-lab/software/java-project-template/-/blob/main/.gitlab-ci.yml
- Registry: https://gitlab.com/sosy-lab/software/java-project-template/container_registry/115062
- JavaSMT attempted to provide a valid manifest but encountered issues due to GitLab CI limitations, Podman privilege restrictions, and gaps in expertise: https://github.com/sosy-lab/java-smt/pull/442 (several intermediate commits using Kaniko or manifest-tool directly in Podman)
Edited by Karlheinz Friedberger