What is continuous integration?
Continuous integration is the practice in the software building process where development teams have to maintain the central repository of their product code.
All development team members frequently & continuously merge their code changes to this central code repository.
Continuous integration has started as a part of extreme programming practice and now days is being used by many small and agile technical teams.
The main goal is to reduce the project delivery times, integrate QA into the development process.
Business Use Case
The main goal of most software development teams is to keep releasing new software functionality and updates frequently.
Automating the repetitive tasks allow to significantly increase the team cadence.
If software development team can utilise continuous integration toolset to pick up all the manual tasks, developers can focus on building the new software functionality.
Such tasks include – running the test suite against pull requests in team codebase, verifying the code quality, containerizing applications, building various reports, notifications, etc.
Continuous Integration How
Software development team members are committing their code to the central source control repository.
CI tools would pick up the incoming code changes (like pull requests or the new commits) usually by using webhooks.
After detecting the code change, they would then start the array of automated tasks, which are defined upfront by the software owners.
For example, these tasks might include running the predefined unit or integration test sets, building the software and releasing it to development and testing environments.
Most continuous integration tools are capable to generate reports, and use various notification channels to send automatic updates to the team.
The diagram at the beginning of this post highlights the typical CI flow.
The continuous integration server plays a central orchestration role in automating the flow.
In practice, such flow is quite fast (taking minutes) and provides a quick feedback loop for software development team members.
In typical continuous integration flow running the tests and validating software quality usually comes before automatically building the software version for release.
This allows to automatically catch the bugs before they even make it to software releases.
Continuous integration will not automatically fix the software bugs for team, but good setup will make it easy to detect the bugs while the team is busy adding new features.
Once software teams are matured enough with their continuous integration process, the next goal is to move towards the continuous delivery.
We have created the list of continuous integration tools which are most commonly used in enterprise technology stack.