Agile projects, as the name suggest, require a great deal of agility in its execution. One way to achieve agility is to make sure that the quality of the product is maintained after each delivery. That is what the Continuous Integration helps with!
What is Continuous Integration?
Software packages are built, tested and integrated regularly with the bigger work unit.
One of the core principles of CI is to make sure that nothing gets into the system that will break it, while making sure that the agility or frequent delivery is not compromised.
What are the key characteristics of CI?
Any CI process must ensure the following:
- Developers can deliver finished work packages at any time
- Their delivery is independent of those from their peers
- Developers are able to compare and merge the delivery as needed, if the central source was changed during their development
- Agreed set of Unit and Acceptance tests are run and passed. If one or more tests fail, developers receive notifications and cannot proceed until the failures are fixed
- Once the delivery is successful, it is instantly available for everyone else to integrate
Why is it important for Agile Projects?
Agile estimation techniques suggest to breakdown deliveries in such a way that the work packages are small enough to be completed by a single developer and doesn’t take more than 2 ideal days to deliver. This means that there will be several developers working on the same product, delivering many work packages.
Given this premise, it is highly possible that a delivery breaks something that was created in the other delivery. Making developers responsible to maintain the sanity is highly error prone and time consuming.
An automated CI system enables frequent deliveries by multiple developers, while making sure that the required level of quality is maintained.
What tools are available in the market?
Several open source tools are available in the market for continuous integration.
Written in Java, it is a very popular and powerful CI tool. It focuses on building / testing software projects and monitoring externally run jobs. All major source control tools like Git, Subversion, Mercurial, ClearCase are supported.
This is another Java based CI tool for a continuous build process. It includes various plugins including ones for email notification. Cruise Control also supports the major source control tools in the market. There is a .NET version of the tool and is named Cruise Control.NET.
For a detailed list of CI tools available, head over to Wikipedia.
- Continuous Integration greatly eases frequent deliveries while ensuring the sanity of the product source
- It offers work flows to make it easy for the developers to deliver independent units of work
- It is ideal for Agile projects where frequent, short deliveries are essential
- Several tools are available in the market, Jenkins and Cruise Control are popular
Are your using Continuous Integration in your Agile Projects? Which tools do you use and what is your experience? We love to hear from you.