Resolve "Optimize CI pipeline"

Merged Alberto Miranda requested to merge 165-optimize-ci-pipeline into master

This MR optimizes the CI pipelines by doing the following:

  • Enable out-of-order execution of jobs using the needs clause
  • Split tests for better parallelization
    • Evaluate the parallel keyword
    • Evaluate the interruptible keyword
  • Reduce artifact size by removing unneeded object files between stages
  • Refactor Docker images and make them versioned
    • Create a gekkofs/core image for system dependencies
    • Create a gekkofs/deps image for downloaded dependencies
    • Create a gekkofs/linter image for validation of formatting
    • Create a gekkofs/testing image for running tests
    • Create a gekkofs/coverage image to generate coverage reports
    • Add configuration profiles to dl_dep.sh and compile_dep.sh

It also improves the reporting of tests by integrating it with the GitLab UI. This required the following changes:

  • Enable JUnit reporting of tests
    • Enable JUnit reporting for integration tests
      • Fix reported filename for GitLab integration
      • Integrate daemon and client logs into JUnit XML
    • Enable JUnit reporting for unit tests

Closes #165 (closed) #157 (closed) #166 (closed) #167 (closed)

Edited by Alberto Miranda

Merge request reports