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
pwshandservercoreimages 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>-pwshbecomes:multi-<ref>-pwsh
-
-
I propose we combine
baseandservercoreimages 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>-pwshbecomes: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?