Peano 4
Continuous Integration

On this page, we detail the current function of the CI pipeline.

Much of the following is subject to change.

How do I run the pipeline?

The pipeline only runs after somebody pushes to one of the following branches:

  • p4
  • DG
  • exahype
  • gpus
  • multigrid
  • applications
  • particles
  • ccz4-cpp

At time of writing, gitlab-runner is installed as a service on the b116 node of DINE. After pushing to one of the branches listed above, you can run the pipeline as follows:

Make sure gitlab-runner is in your path

The directory needed is /var/local/gitlab-runner.

Load the module for singularity, and make sure that the image directory is in your path

Singularity is our container platform, as opposed to docker. Load the singularity module with: module load singularity.

You will also need to ensure that SINGULARITY_CACHEDIR is set correctly. This environment variable is used throughout the CI script. It indicates where the singularity images are located. Currently, we store the images at /cosma5/data/do009/dc-bacc2/peano_images, with the aim of changing this once a common storage location has been chosen.

Log in to the b116 node

A valid command is as follows:

srun --pty -p bluefield1 -w b116 -A do009 -t 1:00:00 $SHELL

This will invoke a shell session on the b116 node that lasts an hour.

Run the pipeline

Just type gitlab-runner run. If you check the repository website, you should see some progress being made.

How does the pipeline work?

Within the repo, we have various scripts to build the code. configure.py in the top-level of Peano will configure and make the code according to whatever requirements are needed. The only difference here is we use singularity exec to make sure that these commands are run inside these singularity images, so that specific compilers can be used automatically.

This is planned to change, however, as this isn't so clean. In the future, we either plan to mirror the repo to GitHub and use GitHub actions, or make an executor for gitlab-runner that can handle singularity images directly.