Search This Blog

Showing posts with label Continuous Integration. Show all posts
Showing posts with label Continuous Integration. Show all posts

Thursday 6 April 2017

Continuous Integration

Continuous Integration
Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly. 
The basic idea behind the continuous integration is to ensure that there are no compilation issues at the end of the day by numerous check ins made by the developers in a team. Also, this would enable to identify any compilation issues at the early stages of the development process.
In this process, all the developers’ activities are collaborated and merged at the central system.  The main aim in this process is to eliminate the “integration problems”. Each and every integration is automatically built, deployed and tested thoroughly.
The main aim of CI is to prevent integration problems.
Continuous integration is the practice of frequently integrating one's new or changed code with the existing code repository which should occur frequently enough that no intervening window remains between commit and build, and such that no errors can arise without developers noticing them and correcting them immediately. 
Rather than a periodically scheduled build, in CI the normal practice is to trigger these builds by every commit to a repository.

Best Practices of CI
1.      Maintain a proper code repository.
2.      Automate the build process.
3.      Ensure every developer commits the files to the main stream every day.
4.      Every commits made should be built.
5.      Results of the build should be made transparent, so that all the developers will be aware of the quality of the build every day.
6.      Test the build in a production look-like environment.
7.      Broken builds should be fixed immediately.
8.      Everyone should be able to get the latest build from the main stream.
9.      Automate the deployment process.
 Advantages of CI
1.      Integration bugs are detected early and are easy to track down due to small change sets. 
2.      Avoids last-minute chaos at release dates
3.      Constant availability of a "current" build for testing, demo, or release purposes.
4.      Frequent code check-in pushes developers to create modular, less complex code
5.      Enforces discipline of frequent automated testing.
6.      Immediate feedback on system-wide impact of local changes