Continuous Integration (CI)
Continuous
Integration (CI) is a development practice that requires developers to
integrate code into a shared repository several times a day. Each check-in is
then verified by an automated build, allowing teams to detect problems early.
By integrating
regularly, you can detect errors quickly, and locate them more easily.
Solve
problems quickly
Because
you’re integrating so frequently, there is significantly less back-tracking to
discover where things went wrong, so you can spend more time building features.
Continuous
Integration is cheap. Not continuously integrating is costly. If you don’t
follow a continuous approach, you’ll have longer periods between integrations.
This makes it exponentially more difficult to find and fix problems. Such
integration problems can easily knock a project off-schedule, or cause it to
fail altogether.
Continuous
Integration brings multiple benefits to your organization:
·
Say goodbye to long and tense integrations
·
Increase visibility which enables greater
communication
·
Catch issues fast and nip them in the bud
·
Spend less time debugging and more time
adding features
·
Proceed in the confidence you’re building
on a solid foundation
·
Stop waiting to find out if your code’s
going to work
·
Reduce integration problems allowing you to
deliver software more rapidly
More than a
process
Continuous
Integration is backed by several important principles and practices.
The Practices
·
Maintain
a single source repository
·
Automate
the build
·
Make
your build self-testing
·
Every
commit should build on an integration machine
·
Keep the
build fast
·
Test in
a clone of the production environment
·
Make it
easy for anyone to get the latest executable
·
Everyone
can see what’s happening
·
Automate
deployment
How to do it
·
Developers
check out code into their private workspaces.
·
When
done, commit the changes to the repository.
·
The CI
server monitors the repository and checks out changes when they occur.
·
The CI
server builds the system and runs unit and integration tests.
·
The CI
server releases deployable artefacts for testing.
·
The CI
server assigns a build label to the version of the code it just built.
·
The CI
server informs the team of the successful build.
·
If the
build or tests fail, the CI server alerts the team.
·
The team
fix the issue at the earliest opportunity.
·
Continue
to continually integrate and test throughout the project.
Team
Responsibilities
·
Check in
frequently
·
Don’t
check in broken code
·
Don’t
check in untested code
·
Don’t
check in when the build is broken
·
Don’t go
home after checking in until the system builds
Many teams develop
rituals around these policies, meaning the teams effectively manage themselves,
removing the need to enforce policies from on high.
Continuous
Deployment
Continuous
Deployment is closely related to Continuous Integration and refers to the
release into production of software that passes the automated tests.
Essentially, “it is
the practice of releasing every good build to users,” explains Jez Humble,
author of Continuous Delivery.
By adopting both
Continuous Integration and Continuous Deployment, you not only reduce risks and
catch bugs quickly, but also move rapidly to working software.
With low-risk
releases, you can quickly adapt to business requirements and user needs. This
allows for greater collaboration between ops and delivery, fuelling real change
in your organisation, and turning your release process into a business
advantage.
No comments:
Post a Comment