What is Continuous Integration?
Continuous Integration (CI) is the process of automating the build and testing of code every time a team
member commits changes to version control. CI encourages developers to
share their code and unit tests by merging their changes into a shared version control repository after
every small task completion. Committing code triggers an automated build system to grab the latest code
from the shared repository and to build, test, and validate the full
CI emerged as a best practice because software developers often work in isolation, and then they need to integrate their changes with the rest of the team's code base. Waiting days or weeks to integrate code creates many merge conflicts, hard to fix bugs, diverging code strategies, and duplicated efforts. CI requires the development team's code be merged to a shared version control branch continuously to avoid these problems.
CI keeps the
main branch up-to-date. Teams can leverage modern version control systems such as Git
to create short-lived feature branches to isolate their work. A developer submits a
pull request when the feature is complete and, on approval of the pull request,
the changes get merged into the
main branch. Then the developer can delete the previous feature branch.
Development teams repeat the process for additional work. The team can establish branch policies to ensure
main branch meets desired quality criteria.
Teams use build definitions to ensure that every commit to the
main branch triggers the automated build
and testing processes. Implementing CI this way ensures bugs are caught earlier in the development cycle,
which makes them less expensive to fix. Automated tests run for every build to ensure builds maintain a