Draft: Manifest 2: helperTagList to helperTagSpec/helperBuildSet
This is MR 2/4 for my proposed rework of gitlab-org/gitlab-runner!4680 (closed).
This rework makes clearer how helperBuilds are organized into related build sets. Each helperBuildSet may be uploaded as a manifest list. The helperBuild contains a base helperTagSpec, which completely encodes the docker tag to be used to refer to that build, as well as an optional slice of aliases. Similarly, the helperBuildSet encodes a base tag and slice of aliases. Though, as of this MR, these aliases are not used.
There are a couple implicit assumptions introduced:
- Every
helperBuildto be uploaded must be added to ahelperBuildSet. - If we don't want to upload a manifest list for a given
helperBuildSet(e.g. for now we're not uploaded a "-pwsh" manifest list), leave theimageName,registryImage, and/orversionblank in itsbaseManifestTag. - The
helperBuilds added to ahelperBuildSetmust all be compatible within a given manifest list. For now, this means all the builds must have different architectures. But, I don't want to explicitly validate that within a build set, because when windows manifest lists are added they'll share the same architecture. The difference (os.version) won't be readily visible. Instead, I'm just accepting that the push might fail if we've created an improperhelperBuildSet.
Edited by Anthony Juckel