Augments rapid response towards greater
software quality and improved productivity
Traditional
software development methods don't dictate how frequently or regularly you
integrate the entire source on a project. In an organization where there is
development of projects or products of larger scale in the team, programmers
typically work on particular parts of the assignment ("features" or
"hotfixes"). These should be systematically combined into one whole
of the project while maintaining the integrity (functionality) of already
existing work. Longer integration cycles typically slow down the workflow of
agile teams which produce robust code at each iteration level. This is because,
more programmers share the code and more time it takes to de-bug or resolve any
code issues. For these reasons, agile teams often choose to use Continuous
Integration.
So, what is CI?
Continuous Integration (CI) is the
practice of integrating code into a shared repository as often as possible
which greatly improves the efficiency of working in a development team. Each
check-in is then verified by an automated build which typically sets the
configuration for each of the environments, runs tests and provides confirmation
of the latest version of the code base, as well as notification of any failed
steps and the ability to roll back to the most stable version of the code base
if necessary. Crucial advantage of the CI process is the actual speed of change
distribution into various environments, where continuous integration greatly
helps reducing errors while reaching a sufficient speed.
Key objectives of
the CI process:
- minimize the duration and effort required by "each" integration episode
- be able to deliver "at any moment" a product version suitable for release
Why CI?
With Continuous Integration,
applications are built from a very early stage in the development process at
specific frequent intervals or on every change checked in by the developers.
This effectively eliminates the need for integration testing and the cost
associated with developers spending time on this phase.
The enablement of frequent
incremental builds and mandating a comprehensive automated testing process also
allows developers to detect problems early and as a result, ensure higher
application quality.
Key
benefits of CI:
On the ground, the benefits
of Continuous Integration are:
·
Eradication of
manual FTP deployment
·
Prevention &
reduction of production & staging errors
·
Generation of
analysis & reporting on the health of the code base
In business terms, the value of Continuous Integration is:
·
Reduced risk
·
Reduced overheads
across the development & deployment process
·
Enhancing the
reputation of the company by providing Quality Assurance
Getting
your business started with CI
Make sure you address these three important elements that underpin any
Continuous Integration System:
1. Commitment to building tests:
The development team must be committed to produce a comprehensive test suite at
the unit level and functional level together with their code. This is essential
to achieve the “guaranteed” level of code quality that can be production ready
at any moment.
2. Never break the build: The
goal is that the application must be ready to be built, packaged and deployed
on every committed change. This (of course), means that broken or untested code
should never be committed.
3. Version Control: To be ready to focus on implementing
Continuous Integration, the code has to be managed by strict version control
policies.
Conclusion:
Continuous Integration is a process, not
a set of tools, it requires great amount of discipline from software
development team members. The goal of Continuous Integration (CI) is to make
sure that software is operational and working all the time. Continuous
Integration continues to evolve at a fast pace thanks to the evolution of
integration servers and the underlying version control systems, greatly
improving the release frequency and overall project stability.