Merge GitLab CI into GitLab CE
The idea is to integrate GitLab CI with GitLab CE.
The advantages are:
- Automatic enabling of CI for new projects that contain .gitlab-ci.yml (zero-config)
- Showing the build status for commits and branches index pages (with a commit status API to allow other services to do the same)
- Reduce duplicate project information
- Reduce duplicate code for storing secrets
- We prevent duplicating a lot of configuration between apps
- We can stop cross-linking CI and CE via OAuth, removing a barrier
- Reduce the number of normal backups and backing up secrets
- Interface updates will be simultaneous, no effort to improve CI UI separately
- This will make GitLab CI more popular
- Easier to deeply integrate the results in the merge request (show code coverage in diff)
- We can throw away 50% of CI code if merged
- Less memory usage if you want to run both CE and CI (for example on a Raspberry Pi) since it is only a few thousand lines of code, almost of of the gems are shared
- We can add enterprise features to CI without creating another repo like CI-EE
- It will fix a lot of SSL/Nginx issues when connecting CI with CE
- We could effectively reuse code for implemented Services
- It will nicely integrate with GitLab CE UI: commit statuses, charts, builds view
Disadvantages are:
- More memory used by CE (will only be a little)
- If you runners overload CI your CI system now both go down
- Database will be larger, although build logs are stored in text files now
- The CE interface will get more cluttered with CI settings and status
- It takes longer to boot development
- It takes longer to run tests
- It takes longer to understand and explore the project
- You can't host CI on different machine than CE
The transition would mean:
- New urls (prefixed with /ci)
- Integrating the database (prefix with
ci_
)
/cc @dzaporozhets @ayufan