Multiarch manifests for helper images
As far as I'm aware, we currently have 3 variants of the helper images:
tag | os | arch | version |
---|---|---|---|
pwsh | linux | x86_64 | all |
servercore | windows | amd64 | 2004, 1809, 1903, 1909 |
base | linux | s390x, arm64, arm, x86_64 | all |
We should probably make multiarch manifest versions of these. This becomes especially important for Windows, where it's difficult to juggle the different Windows versions/builds in Kubernetes, as is preferrable to rely on the underlying container runtime to negotiate it.
-
I propose we combine
pwsh
andservercore
images into a single manifest, calledmulti-<version>-pwsh
:-
:<revision>-pwsh
,:<revision>-servercore-(2004,1809,1903,1909)
becomes::multi-<revision>-pwsh
-
:latest-pwsh
,:latest-servercore--(2004,1809,1903,1909)
becomes:multi-<latest>-pwsh
-
:<ref>-pwsh
,:multi-<ref>-pwsh
becomes:multi-<ref>-pwsh
-
-
I propose we combine
base
andservercore
images into a single manifest, calledmulti-<version>
:-
:<revision>
,:<revision>-servercore-(2004,1809,1903,1909)
becomes::multi-<revision>
-
:latest
,:latest-servercore--(2004,1809,1903,1909)
becomes:multi-<latest>
-
:<ref>
,:multi-<ref>-pwsh
becomes:multi-<ref>
-
This means that no matter your operating system/version, if you want :pwsh
you get a helper that includes powershell (from either the linux:pwsh image, or the windows servercore image).
This means that no matter your operating system/version, if you want a base image that doesn't necessarily contain powershell, but includes a shell targetted best for your environment, you get a supported image with either bash or powershell.
It's worth nothing that each image is still fetchable individually. A manifest just references the existing images.
Hurdles:
- Referencing images at the repository, across different versions/OSs will have to likely be done as a post-release step.
- Something is up with the way we produce images at the moment. No matter the arch, https://hub.docker.com/r/gitlab/gitlab-runner-helper/tags sees every one of them as
amd64
. This is likely related to our odd buildx issues?