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