Improve CI configuration for GitLab CE
I'm opening this issue to discuss a proposed configuration features that we can include in CI that will make this configuration file much simpler than it is now: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/.gitlab-ci.yml
This configuration uses a number of features:
- stages,
- restore and store knapsack configuration in cache,
- parallelise rspec/spinach builds based on knapsack,
- generate HTML coverage report for the whole test suite (https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/5018),
- (in future) publish coverage report as pages,
- test against Ruby:2.1/2.2/2.3,
- some jobs use MySQL service, some not,
- use
GIT_DEPTH
to speed-up cloning using shallow clone, - conditionally execute
bundle install
for some jobs, - send custom notifications (Slack) on failures,
- re-use YAML configuration using YAML anchors and map merging