Implement CI with automated builds and tests
Description
Continuous integration (CI) automatically builds and tests the project on a clean system and is therefore essential for further development. The DUNE infrastructure provides Docker testing images to use and several default scripts running dunecontrol
. Apparently, dune-citools is the repository for this. The DUNE GitLab instance also provides a Docker container registry to store images. This is useful as one does not rely on DockerHub for up- and downloading images.
Automated builds and tests of course require tests to be executed, see #2.
Open Questions
-
CI/CD somehow does not seem enabled for this project. Is this because there is noI simply had to enable Pipelines in the project settings.gitlab-ci.yml
file or do we need to ask an administrator to enable it? - What are the capabilities of the GitLab Runners provided? Do we need to register a custom runner for this project?
-
What do the provided Docker images contain? We probably need to set up a new base image with all DUNE module dependencies for this project.See CI Images. We can use the provided images to build our own and add them to the image registry.
Proposal
Add a gitlab-ci.yml
file specifying the following jobs (depending on state of #2):
-
Not possible because shared runners do not support Docker-in-Docker executionprep
stage: Install DUNE modules usingduneci-install-module [--recursive]
, then push to the registry of this repo. -
build:default
: Default release build -
build:debug
: Default debug build -
build:tests
: Build the unit and/or system tests -
test:system
: Run system tests -
test:unit
: Run unit tests -
test:examples
: Run example settings and verify results
Edited by Lukas Riedel