Hacking on the CI TemplatesΒΆ

This is an outline of how everything fits together in this repository.

This repository contains both the source and the generated output. The directory structure is as follows:

  • bootstrap: Scripts used by the bootstrap images.

  • src: The source template files and per-distribution configuration.

  • templates: The generated templates. Do not edit.

  • test: Scripts used by the CI to test images.

  • tools: The ci-fairy tool.

The ci-templates repository has two consumables: - the files in the templates folder are to be included by external

projects, see CI Templates for the details.

  • the CI pipeline produces several container images that these templates rely on. These images are hardcoded in the templates and are the ones used to build the real jobs in the external project. Some of these images are mirrored to https://quay.io to reduce bandwidth requirements on our infrastructure.

When templates change, the src/generate_templates.py script generates both the resulting templates/ and the .gitlab-ci.yml file that generates the consumable images and the various CI pipelines to test these images and the templates.

The consumable images are built in the bootstrap phase of the CI pipeline, see the .gitlab-ci/bootstrap-ci.yml file for details. As a short summary: this stage builds container images that are capable of building the images the external projects need.