-GitLab
-======
+GitLab CI Pipeline Execution
+============================
The repository contains DockerFiles and GitLab Runner configuration
files to support automated testing and documentation builds.
.. todo:: Expand this documentation to resolve :issue:`3275`
-Pipeline execution
-------------------
-
.. todo:: Discuss the distinct characteristics of |Gromacs| CI pipelines to relevant to job configuration.
+ (:issue:`3472` and :issue:`3617`)
-.. todo:: Comment on the number of pipelines that can be or which are likely to be running at the same time.
+.. todo:: (:issue:`3472` and :issue:`3617`) Comment on the number of pipelines that can be or which are likely to be running at the same time.
+ (:issue:`3472` and :issue:`3617`)
.. note::
sufficient testing before acceptance.
Configuration files
-~~~~~~~~~~~~~~~~~~~
+-------------------
At the root of the repository, :file:`.gitlab-ci.yml` defines the stages and
some default parameters, then includes files from :file:`admin/gitlab-ci/` to
via the `*extends* job property <https://docs.gitlab.com/ee/ci/yaml/#extends>`_.
Job parameters
-~~~~~~~~~~~~~~
+--------------
Refer to https://docs.gitlab.com/ee/ci/yaml for complete documentation on
GitLab CI job parameters, but note the following GROMACS-specific conventions.
to `cache:key <https://docs.gitlab.com/ee/ci/yaml/#cachekey>`__
image
- Part of the tool chain configuration. Instead of setting *image*
- directly, *extend* a *.use_<toolchain>* template from
- :file:`admin/gitlab-ci/global.gitlab-ci.yml`
+ See :doc:`/dev-manual/containers` for more about the Docker images used for the
+ CI pipelines. If a job depends on artifacts from previous jobs, be sure
+ to use the same (or a compatible) image as the dependency!
rules
only
for details of the merging behavior. Refer to :ref:`variables` for local usage.
Schedules and triggers
-~~~~~~~~~~~~~~~~~~~~~~
+----------------------
Pipeline `schedules <https://gitlab.com/help/ci/pipelines/schedules>`__ are
configured through the GitLab web interface.
through the Gitlab web interface.
Global templates
-~~~~~~~~~~~~~~~~
+----------------
In addition to the templates in the main job definition files,
common "mix-in" functionality and behavioral templates are defined in
:file:`admin/gitlab-ci/global.gitlab-ci.yml`
Job names
-~~~~~~~~~
+---------
Job names should
.. _variables:
Updating regression tests
-~~~~~~~~~~~~~~~~~~~~~~~~~
+-------------------------
Changes in |Gromacs| that require changes in regression-tests are notoriously hard,
because a merge request that tests against the non-updated version of the
The solution is a new regression-test branch or commit, uploaded to gitlab.
Then set that regression test branch with REGRESSIONTESTBRANCH or
the specific commit with REGRESSIONTESTCOMMIT when
-running the specific pipeline that requires the regressiontest-update.
+running the specific pipeline that requires the regressiontest-update.
See below on how to set variables for specific pipelines.
Variables
-~~~~~~~~~
+---------
The GitLab CI framework, GitLab Runner, plugins, and our own scripts set and
use several `variables <https://docs.gitlab.com/ee/ci/variables/README.html>`__.
pipeline execution time.
REGRESSIONTESTBRANCH
- Use this branch of the regressiontests rather than master to allow for
+ Use this branch of the regressiontests rather than master to allow for
merge requests that require updated regression tests with valid CI tests.
REGRESSIONTESTCOMMIT
- Use this commit to the regressiontests rather than the head on master to
- allow for merge requests that require updated regression tests with
+ Use this commit to the regressiontests rather than the head on master to
+ allow for merge requests that require updated regression tests with
valid CI tests.
POST_MERGE_ACCEPTANCE
``BUILD_DIR``, ``INSTALL_DIR``, ``CACHE_FALLBACK_KEY``, ...
Setting variables
-~~~~~~~~~~~~~~~~~
+-----------------
Variables for individual piplelines are set in the gitlab interface under
``CI/CD``; ``Pipelines``. Then chose in the top right corner ``Run Piplelines``.