Rearrange gitlab CI/CD pipeline to reduce e2e test time.

The current gitlab-CI/CD pipelines take a lot of time (see: #509 (closed) ). In order to shorten the time it takes to run the full CI/CD -pipeline we could rearrange and squeeze the "execution order" of the included jobs.

The setup, of running the stages interdependently from each other, must still be provided as following:

Order pre-dependencies Stage post-dependencies
1. None Unittests coverage
2. OS provisioning E2E tests OS cleanup
3. Successful tests Release None

Current CI/CD pipeline:

Following image represents the current pipeline setup. Highlighted in blue are the jobs that are executed only on merge requests and highlighted in red is the last job that runs on releases, when the version number is increased. All other jobs do always run on each commit done to any issue related branch.

krake-pipeline-current

Improved CI/CD pipeline suggestion:

The suggestion would be to split up the e2e provisioning from the e2e testing in between the stages. Also the coverage stage could be placed at the same stage the e2e testing in order to not let the test wait for the coverage data recovery. Furthermore I would suggest to run the coverage task only on merge trains and merge requests.

krake-CICD-pipeline-suggestion

Additional:

To further improve the E2E tests, this issue also addresses the shortening of sleep intervals in the integration tests. This only works if the default configuration of the rescheduling interval also gets shortened. (see: https://gitlab.com/rak-n-rok/krake/-/blob/master/ansible/group_vars/krake_apps.yml#L60)


Development steps

  • Write backup provisiong - and cleanup job in order to make pipeline more relient
  • Schedualed pipeline to build gitlab CI/CD ansible images
  • Split up e2e into provisioning testing and cleanup
  • Rearange pipelines
  • Cut down sleep times in integration tests
Edited by Toni Finger