Continuous Integration Tools - Automated Software Configuration Management, Build and Unit Tests

 

This web site presents a list of continuous integration tools both open source (Jenkins, Hudson, CruiseControl, etc.) and commercial (TeamCity, Bamboo). Today the trend is more to continuous deployment and devops with a process that does not only build a check a new software release but also deploy it to target platforms automatically. However, continuous integration is still an important concept for Agile teams that deploy production releases less frequently and is also the beginning steps to reach a continuous deployment stage.

Martin Fowler defined Continuous Integration as a software development practice where members of an Agile 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.

continuous integration cycle
A typical continuous integration cycle
(source http://www.methodsandtools.com/tools/tools.php?hudson)

The main features of a continuous integration tool are user and permission management, integration with source control software (GitHub), integration with IDE (Eclipse, Visual Studio), build configuration, parallel builds, build dependencies, remote build, multi-platform build, testing reports generation, team members notification, statistics reports, external tools (build management, unit testing, functional testing) integration through a plugin system.