Continuous Integration: definition

Continuous Integration is a software development practice that enables many developers to work on a single set of source code at the SAME time. Developers use a version control system that helps the team to make changes in their code, go back to its previous versions, and continuously integrate it into the central, shared repository several times a day. This way every developer has constant access to the same files of the project. Continuous integration is of the practices introduced in Extreme Programming.

How was it before Continuous Integration?

In an old school approach, every developer used to work separately on their own files, building its own features. At some point, they would check their features to work against the code base. Finally, they would just merge their code together.  The problem that might appear was the merge conflict, where two lines of code interfere with each other. Before one developers checked in their changes, another made changes that made the conflict occur.

CI fixed that problem

  • automatization to inspect the code. Whenever there are some changes in the repository, an automated build and test are run.
  • If something gets wrong, the team will get a notification,
  • every developer has to update their copy of the repository on a daily basis, preferably several times a day.

Some advantages of CI

  • it increases transparency since everyone has constant access to the same files of the project,
  • this improves communication between developers,
  • constant checking out for errors,
  • quicker validations of releases,
  • small chunks of code being tested.