Continuous integration

CIbuild serverintegration is done automatically
In software engineering, continuous integration (CI) is the practice of merging all developers' working copies to a shared mainline several times a day.wikipedia
177 Related Articles

Test-driven development

Test Driven Developmenttest-first developmentTDD
In XP, CI was intended to be used in combination with automated unit tests written through the practices of test-driven development.

Continuous delivery

continuous delivery / deploymentcontinuous deploymentcontinuously being improved
In the same vein, the practice of continuous delivery further extends CI by making sure the software checked in on the mainline is always in a state that can be deployed to users and makes the deployment process very rapid.
The types of tools that execute various parts of the process include: continuous integration, application release automation, build automation, application lifecycle management.

CruiseControl

Cruise ControlCruiseControl.NET
CruiseControl, one of the first open-source CI tools, was released in 2001.
It allows one to perform a continuous integration of any software development process.

Extreme programming

XPcollective code ownershipcourage in programming
Extreme programming (XP) adopted the concept of CI and did advocate integrating more than once per day – perhaps as many as tens of times per day.

Daily build

nightly buildnightlyNightly builds
In addition performing a nightly build is generally recommended.
Continuous integration is now run on an almost continual basis, with a typical cycle time of around 20-30 minutes since the last change to the source code.

Comparison of continuous integration software

Continuous integration softwarecontinuous integration software projects
This is a compendium of continuous integration software that supports a software engineering practice, continuous integration, in which developers' changes are immediately tested and reported when they are added to the mainline code base.

Integration testing

integrationintegration testintegration tests
Integration tests are usually run automatically on a CI server when it detects a new commit.

Deployment environment

development environmenttest environmentproduction environment
Initially this was conceived of as running and passing all unit tests in the developer's local environment before committing to the mainline.
Building the repository's copy of the source code in a clean environment is a separate step, part of integration (integrating disparate changes), and this environment may be called the integration environment or the development environment; in continuous integration this is done frequently, as often as for every revision.

Multi-stage continuous integration

Multi-stage continuous integration is an expansion upon continuous integration, it presumes that you are already following those recommended practices.

Software testing

beta testingtestingbeta
The ultimate goals of this test process are to support continuous integration and to reduce defect rates.

Build automation

build systemBuild toolSoftware build automation
Build automation is a best practice itself.
Although build servers existed long before continuous-integration servers, they are generally synonymous with continuous-integration servers, however a build server may also be incorporated into an ARA tool or ALM tool.

Build light indicator

The traditional use of a build light is to determine the success of a software build in a continuous integration (CI) system.

Continuous testing

continuous integration testingContinuous security validation platformcontinuous test
Tests are executed during or alongside continuous integration—at least daily.

Best coding practices

best practice for software developmentbest practicescomputer programming
A best practice for building code involves daily builds and testing, or better still continuous integration, or even continuous delivery.

Software engineering

software engineersoftware engineerssoftware
In software engineering, continuous integration (CI) is the practice of merging all developers' working copies to a shared mainline several times a day.

Trunk (software)

trunkmainlinedevelopment trunk
In software engineering, continuous integration (CI) is the practice of merging all developers' working copies to a shared mainline several times a day.

Grady Booch

BoochE. Grady Booch
Grady Booch first proposed the term CI in his 1991 method, although he did not advocate integrating several times a day.

Booch method

Boochhis 1991 methodBooch notation
Grady Booch first proposed the term CI in his 1991 method, although he did not advocate integrating several times a day.

Feature toggle

canary-style deploymentfeature flagging
Where necessary, partially complete features can be disabled before committing, using feature toggles for instance.

Quality control

quality standardsqualityquality standard
In addition to automated unit tests, organisations using CI typically use a build server to implement continuous processes of applying quality control in general — small pieces of effort, applied frequently.

Quality assurance

QAquality assessmentquality
In addition to running the unit and integration tests, such processes run additional static and dynamic tests, measure and profile performance, extract and format documentation from the source code and facilitate manual QA processes.

Software quality

software reliabilitycode qualityquality
This continuous application of quality control aims to improve the quality of software, and to reduce the time taken to deliver it, by replacing the traditional practice of applying quality control after completing all development.

Programmer

software developercomputer programmerdeveloper
When embarking on a change, a developer takes a copy of the current code base on which to work.

Codebase

code basecode treegame code
When embarking on a change, a developer takes a copy of the current code base on which to work.