Skip to content

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 and servercore images into a single manifest, called multi-<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 and servercore images into a single manifest, called multi-<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?