Resolve "Optimize CI pipeline"
This MR optimizes the CI pipelines by doing the following: - [x] Enable out-of-order execution of jobs using the `needs` clause - [x] Split tests for better parallelization - [x] Evaluate the `parallel` keyword - [x] Evaluate the `interruptible` keyword - [x] Reduce artifact size by removing unneeded object files between stages - [x] Refactor Docker images and make them versioned - [x] Create a `gekkofs/core` image for system dependencies - [x] Create a `gekkofs/deps` image for downloaded dependencies - [x] Create a `gekkofs/linter` image for validation of formatting - [x] Create a `gekkofs/testing` image for running tests - [x] Create a `gekkofs/coverage` image to generate coverage reports - [x] 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: - [x] Enable JUnit reporting of tests - [x] Enable JUnit reporting for `integration` tests - [x] Fix reported filename for GitLab integration - [x] ~~Integrate daemon and client logs into JUnit XML~~ - [x] Enable JUnit reporting for `unit` tests Closes #165 #157 #166 #167 See merge request !103