Rebuild CI Workflows
Closes #257 (closed).
This MR introduces a major refactoring of our CI/CD pipeline setup and the associated CMake workflows.
CMake Workflow Presets
- All CI workflows are encoded using CMake workflow presets
- Presets are defined in
utilities/workflows/ci-workflows.json, which is automatically generated fromgenerateWorkflows.py - Each preset is composed from fragments, which can be re-used to recreate CI build configs locally and identify a build config by name
Modular CI Setup
- Major cleanup and refactoring of the job base templates, they are moved to
ci-common.yaml - New testsuite tasks can now be defined by merely setting the image, compilers, and workflow preset while inheriting from the base templates
- The testing matrix is automatically generated by
generateWorkflows.pyand executed as a downstream pipeline
CI Tasks Update
- Introduce coverage-collecting test task for each pipeline
- Update all tasks to include as many optional dependencies as possible in the build
- Greatly reduce the size of the test matrix, don't run any debug test sessions (as they take far too long) and drop older compilers
- Only build the testsuite for early testing tasks (removes at least 10 minutes from the runtime)
- Mark long-running tests and exclude them from branch-pipeline testing
- Run the generated test matrix only on merge request pipelines for MRs that are not drafts
Code Cleanup + clang-tidy
- Fix a number of clang-tidy diagnostics occuring in previously non-analyzed code that uses the recently enabled OpenMesh
- Format clang-tidy output as HTML for better viewing in browser