IT:AD:Continuous Integration

As per Martin Fowler's description1) Continuous Integration (CI) is the practice of merging development work with a shared mainline branch frequently – at least daily – in order for each integration to be verified by an automated build and automated tests to ensure changes work and work with other changes.

In this context, the term integration is about the code branches, not the components within a target environment.
It has been suggested2) that a more precise term would have been IT:AD:Continuous Build.

A core concept of IT:AD:Continuous Integration is that only a small fraction of new code is added – specific to a single work item – so the cause of a test failure is easier to find. In older build systems, faulty code is already merged with the primary trunk before the build server can test and fail the new work (leading to “Breaking the Build” scenarios). Current build servers can mitigate (see IT:AD:VSTS:VCS:Git:HowTo:Branch Policy).

The primary function is to test the changes, and report back to the developer. It is not to deploy the code to a target environment. A more mature paradigm is the concept of IT:AD:Continuous Delivery system.


class "Version Control Service" as VCS
class "Build Automation" as BA
class "Continuous Integration" as CI << <&cog> >>
class "Continuous Delivery" as CDEL << <&cog> >>

note left of CDEL
Process maturity heavily
affects the level of
conformance to
Continuous Delivery (CD).
Automation of Static+Dynamic
Security, Performance,
Compliance, Functional,
Post-Deployment Tests
range from 0 to 100%.

class "(Functional) Test Automation" as TA
class "Continuous Testing" as CT << <&cog> >>
class "Continuous Accredited Delivery" as CAL << <&cog> >> #E0E0E0

note left of CAL
Depends on 100%
conformance to
Continuous Delivery

class "Continuous Deployment" as CDEP << <&cog> >>
class "Unit/Static/Dynamic Tests" as ST

CI .UP.> VCS : uses
BA <|-RIGHT- CI : improves
CI <|-DOWN- CDEL : improves
CI <|-RIGHT- CT : improves
CT <|-DOWN- CDEP : improves
CT .UP.> TA : uses

CDEL ..> CT : may use\nsome or\nall of

CDEL <|-DOWN- CAL : improves

ST <.. CI : may use
ST <.. CDEL: uses