Docker Hub registry is able to store manifest list (or fat manifests). A manifest list acts as a pointer to other images built for a specific architecture, thus making it possible to use the same name for images that are built on hardware with different architectures.
Figure 1: Docker registry storing amd64, arm64 images and their fat manifest
In the picture above akraino/validation:k8s-latest is the fat manifest, and its name can be used to reference both images akraino/validation:k8s-amd64-latest and akraino/validation:k8s-arm64-latest. Inspecting the manifest offers the details on what images it has, for what hardware architecture and what OS.
Figure 2: Docker fat manifest details
The validation project is already pushing to Docker Hub, so if you would like to check out some template code, please take a look at ci-management/jjb/validation.
The docker images are in the official repo now [1] and the docker build jobs are passing [2].
[1] https://hub.docker.com/r/akraino/validation/
[2] https://jenkins.akraino.org/view/validation/job/validation-master-docker/
In order to have a multi-arch pipeline in your project you need to: