CI refactoring
Related issue: #235 (closed)
- Jobs are defined using the
parallelmatrixkeyword. - Scripts which run the tests are to be placed in
scripts/ci/jobs/TEST_NAME.sh - CI configuration is split across YAML files
-
main.yamlincluded into.gitlab-ci.yml- entry point for the workflow- should be clear what is running, and on what.
-
common*.yaml- do not actually contain any jobs, just re-usable keys-
common-build.yaml-parallel:matrix:configurations for builds -
common-run.yaml-parallel:matrix:configurations for run jobs, to be run on each device -
common.yaml- keys reusable across all jobs
-
-
devices.yaml- contains keys to set the correcttags:andvariables:
-
- there is also a
README.mdatscripts/ci/config/README.mdto give a brief idea of how to add tests + devices -
extends:is used now - YAML anchors have been removed since they are not usable if a file is included -
build.shrestarts the build from the last target if it failed due to an OOM error- less job failures & avoids rerunning builds from the beginning
- waits between retries - wait time is randomly picked and scales with number of tries
- if the job times out after 1h30m the job is failed + retried as before
- example: https://gitlab.cern.ch/lhcb/Allen/-/jobs/13019643#L459
- Catch2 executable is called directly in
run_built_tests- Calling the executable allows a junit XML report to be generated and passed to the GitLab CI unit test report feature.
- The unit tests are run on each device with RelWithDebInfo + Debug clang10 builds.
- if more Catch2 executable targets become available then they should also be added to the
run_built_tests.shscript
-
post_telegraf.pyis commented out - allowed to fail:
- "full test"
physics-efficiency- scifi_v6 efficiency comparisons sometimes don't match #232 (closed) - "full test"
run-changes- flaky - "test"
run-changes- flaky
- "full test"
- I tried to experiment with 'metrics', however these only work with the premium tiers and above (therefore can be ignored)
At the moment there is a 'minimal' pipeline (merge requests and master, web, schedules) and 'full' pipeline (master, web, schedules)
Todo:
-
"full" pipeline in MR can be triggered manually, auto-runs for master,web,schedules -
build (partially complete) -
throughput -
run changes with / w/o -
efficiencies -
publishing -
(correct me if something is missing) parallel matrix:configurations match all combinations from old configuration -
address discussions in !553 (closed)
Edited by Ryunosuke O'Neil