How GitLab is Doing CI Right

There is now a large selection of Continuous Integration services, both in the cloud and self-hosted. The idea is simple and powerful: whenever new code is pushed to a repository, a series of predefined tasks is run to check whether the code works correctly. This allows the developers to get notified immediately if their changes broke something. However, while this functionality is extremely useful, it is limited by the fact that code hosting and continuous integration are separate services.