This article only covers the comparison of some
of the renowned tools used for Continuous Integration.
What Continuous Integration is
Continuous Integration (CI) implements a continuous processes of applying
quality control; small pieces of effort, applied frequently. The purpose of
Continuous Integration is 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.
Continuous Integration
The practice of frequently integrating one's new or changed code with the
existing code repository should occur frequently enough that no intervening
window remains between commit and build, and such that no errors can arise
without developers noticing them and correcting them immediately. The normal
practice is to trigger these builds by every commit to a repository, rather than
a periodically scheduled build. The practicalities of doing this in a
multi-developer environment of rapid commits are such that it's usual to trigger
a short time after each commit, then to start a build when either of the times
expire, or after a rather longer interval since the last build.
It helps in running all unit and acceptance tests, publishes build results,
notifies developers if a build breaks, labels successful builds in the source
repository.
Some of the practices that should be followed sincerely once the project is in
the Development phase are:
- Maintain a code repository
- Automate the build
- Make the build self-testing
- Every commit should be buildable
- Keep the build fast
- Test in a clone of the production environment
- Make it easy to get the latest deliverable
- Everyone can see the results of the latest build
- Automate deployment
Some of the advantages:
- When unit tests fail or a bug emerges, developers might revert the codebase back to a bug-free state, without wasting time debugging
- Developers detect and fix integration problems continuously, avoiding last-minute chaos at release dates, (when everyone tries to check in their slightly incompatible versions).
- Early warning of broken/incompatible code
- Early warning of conflicting changes
- Immediate unit testing of all changes
- Constant availability of a "current" build for testing, demo, or release purposes
- Immediate feedback to developers on the quality, functionality, or system-wide impact of code they are writing
There are many tools already present in the market for Continuous Integration, one can choose the tool according to the requirements, and here is the comparison for some of commonly used tools:
- Cruise Control is a free and open source
build scheduler; it works with any build tool that produces parse-able
output. Some of the features of Cruise Control are:
- It is cross-platform and works with many of the VCSs
- It is configured in a XML file that maps the build cycles to certain tasks
- The results are published on the
system tray or in the form of emails
- Hudson Build is a Continuous Integration
Server that integrates build, unit tests, code coverage, and analysis and
provides instant knowledge of the status of builds. Some of the features of
Hudson Build are:
- Easy Installation
- Hudson can be configured entirely from its friendly web GUI with extensive on-the-fly error checks and inline help. There's no need to tweak XML manually (optional) anymore
- Hudson can generate a list of changes made into the build from CVS/Subversion. This is also done in a fairly efficient fashion, to reduce the load on the repository
- Monitor build results by RSS or
e-mail to get real-time notifications on failures and many more...
- TFS is a tool that integrates with Visual
Studio in the dockable panel "Team Explorer". In Team Explorer, it lists all
opened projects and provides various options in context menu on
right-clicking the project. It builds on every check-in and provides instant
knowledge of the status of builds. Some of the features of TFS are:
- Team Foundation Server 2010 supports teams doing parallel development and includes many powerful features like atomic check-ins, branching and merging, shelving, labelling, concurrent check-outs, check-in policies, and the association of check-ins with work items
- As mentioned, it can help in associating the check-ins with work items. Work items can consist of requirements, tasks, bugs, issues, and test cases
- It provides a robust and fully featured build automation server. You can customize Team Foundation Build and configure triggers for manual build, Continuous Integration, rolling builds, or scheduled builds
- Provides features to write scripts to run test cases on each build. There are check-in policies, with those in place you can forbid checking-in something without all unit tests passing
- Powerful reports and dashboards in TFS helps you to analyse and track progress
- provides built-in support for Agile
and Waterfall methodologies
- TeamCity is a tool that automates code
analysing, compiling, and testing processes, providing instant feedback on
build progress, problems and test failures, all in a simple and intuitive
web-interface. Some of the features of TeamCity are:
- Run multiple builds and tests under various configurations and platforms simultaneously
- Perform Pre-tested commits, helping the rest of a team sustain an uninterrupted workflow
- Have build history insight with customizable statistics on build duration, success rate, code quality and custom metrics
Comparison:
|
Name |
Platform |
License |
Windows Builder |
Java Builder |
Source Code management System |
Notification |
IDE Integration |
|
Cruise Control |
Cross-Platform |
Free |
MSBuild, NAnt, Visual Studio |
Phing, Apache Ant, Maven |
AccuRev SCM, Alienbrain, BitKeeper, CVS, File system, FTP, Git, Mercurial, MKS Integrity, Perforce, Plastic SCM, PVCS, Rational ClearCase, Robocopy, Surround SCM, Sourceanywhere, SourceGear Vault, StarTeam, Subversion, Telelogic Synergy, Visual Source Safe, TFS |
E-mail, CCTray, RSS |
Eclipse |
|
Hudson |
Servlet Container |
MIT |
MSBuild, NAnt |
Ant, Maven 2, Kundo |
AccuRev SCM, Bazaar, BitKeeper, Clearcase, CMVC, CVS, Git, Mercurial, Perforce, PVCS, SourceSafe, StarTeam, Subversion, TFS |
Android, E-mail, Google Calendar, IRC, XMPP, RSS, Twitter |
Eclipse, IntelliJ IDEA, NetBeans |
|
TeamCity |
Windows, VSTM |
Proprietary |
MSBuild, NAnt, Visual Studio |
Ant, Maven 2/3 |
Subversion, CVS, Git, Mercurial, AccuRev SCM, Clearcase, Perforce, SourceSafe, StarTeam, TFS, Vault |
E-mail, XMPP, RSS, IDE, SysTray |
Eclipse, Visual Studio, IntelliJ IDEA, RubyMine, PyCharm, PhpStorm, WebStorm |
|
TFS |
Servlet Container |
Proprietary |
MSBuild |
Unknown |
Team Foundation Server |
E-Mail, SOAP |
Visual Studio |
PS: Hope you will see how to implement all of
these in my next article.

Mahesh ChandPosted Aug 15, 2013, 9:12 AM
Nice Abhishek. Looks like TeamCity works with pretty much every IDE there. However, marketing of TeamCity is not that good. Not too many developers use it.