RADIUSS Shared CI explained¶
RADIUSS Shared CI is an infrastructure and documentation repository created to help LLNL open-source 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 in the pipelines directory: pipelines/<machine>.yml.
Each file contains both the configuration and the job template for one machine. They assume that some entries will be provided by including and completing the customization files.
Customization files¶
The customization directory holds all the files allowing to customize the
pipeline.
The custom-jobs-and-variables.yml should be copied locally to the project
and completed. This file is included as a local file by the template definition
of the subpipeline trigger job, named .build-and-test: (see
gitlab-ci.yml).
Projects must use gitlab-ci.yml as a base for their own .gitlab-ci.yml,
placing it at the root of the repository. You should give a value to some of
the variables there, according to your use case, and specify the reference of
the `radiuss-shared-ci`_ repository you would like to use
(${SHARED_CI_REF}). This 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 prefer
projects to have the capability to easily add other stages to their CI
configuration.
The subscribed-pipelines.yml file should be copied over and completed. This
file includes the jobs to check each machines availability, as well as the
actuall subpipeline trigger jobs, extending the template defined in
.gitlab-ci.yml.
Local jobs¶
Local jobs should be defined by the user appending in dedicated files, e.g.
.gitlab/jobs/${CI_MACHINE}.yml. We provide a minimal template that can be
copied and duplicated for each machine you would like to set CI for.
Note
Strictly speaking, the local 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 is an excellent source of information. In particular, the “Getting Started” and “Setup Mirroring” sub-pages.