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 from generateWorkflows.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.py and 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
Edited by Frederik Hennig

Merge request reports

Loading