April 25, 2013
Continuous Integration for successful agile projects
What is Continuous Integration?
Continuous Integration or CI, is an increasingly popular concept within the agile methodology. Automating integration is a must in today’s rapid development projects. So what exactly is Continuous Integration and what does Continuous Integration actually include?
Continuous Integration was originally part of Extreme Programming (XP) and its aim has always been to prevent integration issues and problems, fondly referred to by developers around the world as ‘integration hell’.
There are 4 things that Continuous Integration includes on some level or other –
- Builds: Building the code
- Deploy: Installing the code in an executable test/production environment
- Test: Testing the application at various levels
- Reporting: Reporting content and data
Builds in Continuous Integration
Daily builds are the first thing you sign up for when you decide to start working with Continuous Integration. You should make sure in advance that you have a configuration management tool for the code (source control).
In addition, you should also establish shared rules for working with the tool. To build the code, you should set up build scripts and a dedicated server where all the builds are done (a build server).
Deployments in Continuous Integration
When the code is built, you’ll be able to install the executable application in a test environment automatically. Further along, you will also be able to establish procedures for installing the application in the production environment, and you can even run installation tests automatically in conjunction with installation.
Testing in Continuous Integration
You can automate a great deal of testing activity in conjunction with Continuous Integration. Usually, you have automated unit tests, sometimes together with measurements of code coverage. Automating regression tests will save you and your team many hours of labor; since regression tests are run over and over again in a project, you gain back a lot of time by designing test cases so they can be automated from the outset.
Reporting in Continuous Integration
Reporting might not be the first thing you think of when you start working with Continuous Integration. Especially in large projects with many agile teams delivering to the same ultimate client, automating reporting (generating the reports, as well as summarizing and distributing them) can save the team considerable time and expense. The reports can help you illustrate which parts of the code are affected by which teams, which build they are in, and the test results they are getting.
A little more about Continuous Integration
These four aspects of Continuous Integration are not all equally mature – nor do they need to be.
First and foremost, you should focus on the areas you are going to start with.
Then as a second step, set goals in each of them. Keep in mind that these fields interact with one another in different ways, and there are synergies to be had by investing in overlapping areas simultaneously. For example, if you are developing automatic installation tools for the test environment, consider investing in automated installation tests at the same time.