Continuous Integration (CI) is a software development practice where members of a team integrate their work frequently. Integrations can range from once to several times daily. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. The main aim of CI is to provide instant feedback when a defect is found in the code so that the defect can be rectified as soon as possible.
The Cycle followed by CI is Code>>Build>>Test>>Deploy which helps to have high quality and bug free code.
CI runs have two major phases:
Step One – ensures code compiles.
Step two – ensures the code works as designed.
For best results these two phases should be followed by running a series automated tests that validate all levels of a product.
Advantages of CI
- Bugs are detected immediately
- Less debugging time
- There is no integration step which saves time
- Less expensive to fix defects
- Since code is committed frequently, roll-back is easier in case of any major issues
- Makes code robust and speeds up the development work
Jenkins is an open source tool to perform continuous integration. Jenkins is great at finding issues in software early. The main aim of Jenkins is to build when an event has occurred. For example, ‘build after every few minutes’ or ‘build after every commit’. Jenkins also monitors test execution and sends out notifications when a build has passed or failed. It builds and tests your software continuously and monitors the execution and status of jobs, making life easier for the team and identifies issues at the earliest. Jenkins is a highly configurable system and also supports lots of plug-ins
- We can configure build-to-run periodically
- Once a project is successfully created in Jenkins, all future builds are automatic
- Jenkins comes with basic reporting features, i.e. keeping track of build status, last success/failure and so forth.
- Deploys code instantly, no developer builds
- Generates test reports
- Notifies stakeholders of build status
- Large number of plugins supported on Jenkins
Automated Continuous Regression Testing
Regression Testing becomes a challenge if defects are not found at the initial stages. A major concern when developing new software features is that another part of the code will be affected in unexpected ways. With a typical development processes, testers often do not get time to execute a full set of regression tests until late in the release when it is much more costly to fix and retest the product. Continuous integration pairs continuous builds with test automation to ensure that each build also assesses the quality of the code base. Continuous Regression runs on daily basis in background so that we can identify issues caused by new commits.