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:

  1. Every helperBuild to be uploaded must be added to a helperBuildSet.
  2. 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 the imageName, registryImage, and/or version blank in its baseManifestTag.
  3. The helperBuilds added to a helperBuildSet must 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 improper helperBuildSet.
Edited by Anthony Juckel

Merge request reports

Loading