RADIUSS Shared CI explained

Radiuss-Shared-CI is an infrastructure and documentation repository created to help RADIUSS projects adopt the Gitlab CI workflow designed for them.

Project structure

Shared CI files

This project hosts the shared CI configuration, which can be found in the YAML files at the root of the project: <machine>-build-and-test.yml.

Each file contains both the configuration and the jobs for one machine. They assume that some entries will be provided by including the customization files.

Customization files

The customization directory holds all the files allowing to customize the pipeline.

The files custom-pipelines.yml, custom-variables.yml and custom-jobs.yml are all included in the configuration in gitlab-ci.yml.

Project must use gitlab-ci.yml as a base for the .gitlab-ci.yml at the root of their project. This files does not require any change, but can receive additional stages if needed by the project.

Note

We could share .gitlab-ci.yml directly in Radiuss-Shared-CI. However that would require projects to configure GitLab, through the UI, to use that file. This is not considered a good idea at the moment, and we preffer projects to have the capability to easily add other stages to their CI configuration.

Both custom-pipelines.yml and custom-variablse.yml are included globally. They will affect all the CI workflow. The file custom-jobs.yml is included in the build-and-test sub-pipelines and will only affect those ones.

Extra jobs

Extra jobs can be defined by the user appending .gitlab/${CI_MACHINE}-build-and-test-extra.yml. We provide a working minimal template that should always be included.

Note

Strictly speaking, the extra jobs file is only needed once the associated sub-pipeline is reference to .gitlab-ci.yml through customization/custom-pipelines.yml. We make it presence mandatory for all machines for the sake of simplicity.

Other files

The documentation source code is in the docs directory, while cmake aims at receiving BLT submodule to manage the local build of the docs.

References

LC specific documentation for Gitlab. In particular, the “Getting Started” and “Setup Mirroring” sub-pages.