GitLab Continuous Integration is a plugin that allows GitLab to outsource the testing process of an application.
Before talking about Continuous Integration GitLab I think is necessary to make two premises: what is test driven development and what is GitLab.
The test driven development is a development mode that is based on writing short procedures known as TTD to test the code; the development of these tests is done in three stages: Red-Green-Refactor: in Red stage the programmer writes a self-test that necessarily fails; in Green stage the programmer writes the code to pass the test; in the refactor phase, the programmer optimizes code, but has already available the tools to test that the changes are working.
The test driven development is basically the system that allows us to be assured of the quality and goodness of the code during the time, because we will always be certain that subsequent changes are not going to “break” the operation of what has already been written.
GitLab is an installable software that allows you to have a system very similar to GitHub to host their own code and keep track of revisions. As the name implies, the system is based on Git, the popular and advanced revision system. GitLab, and also GitHub, allows a team of developers to proceed in sync and to be able to effectively collaborate in development without the “crash”.
GitLab Continuous Integration is a plugin that combines these two aspects described in the introduction: in fact it is a system that allows you to run the procedures of Test Driven Development automatically and continuously on the server, so all developers have immediate feedback of goodness changes loaded.
The interesting thing about GitLab Continuous Integration is that is born scalable, so you can have multiple servers that work in parallel to test the software much faster than a single server or the PC of the individual developer.
GitLab Continuous Integration, as well as GitLab, is written in Ruby, but is compatible with all programming languages.