Use runner base images
What does this MR do?
- Uses https://gitlab.com/gitlab-org/ci-cd/runner-tools/base-images. This will ease security and maintenance updates of our image dependencies. By building these base images just when we need to, it also significantly reduces our runner pipeline duration.
- Switches to
buildx bake
for the images produced. We now just have to addrunner
andrunner-helper
binaries on top of the base images. The use of a bakefile removes many scripts making that process easier to maintain. - Images are now built and pushed always as a two-step process, whereas before, we'd occasionally need to build and push immediately. This provides more control over image releasing and paves the way for release "promoting" (which we'll address as a follow-up).
- All images (including Windows images) are now built on Linux CI nodes, and we don't incur the overhead of Windows nodes.
- Refactors the pipeline removing some stages (such as
prerelease
) and splitting sometest
jobs out into a separateqa
stage. Some job dependencies were updated to optimise pipeline duration. - Rather than one large CI image (which can take 1m to download), we're now in a position to split the CI image into smaller images per job. This is only done for the prebuilding helper image job at the moment, but can be extended to other jobs. This reduces the amount of time taken to start a job.
- There's now just one Go binary (linux, windows) and it can produce FIPs enabled binaries. In addition it's using an improvement that will be available in 1.24 to improve test caching.
What are the relevant issue numbers?
Closes #38322 (closed)
Edited by Arran Walker