Get certified - Transform your world of work today

Close

Why We Need Continuous Integration

3 February 2016


Continuous integration (CI) involves producing a clean build of the system several times per day, usually with a tool like Jenkins, which uses ANT/Maven and various source-control systems such as SVN. Agile teams typically configure CI to include automated compilation, unit test execution, and source control integration.

Sometimes CI also includes automatically running automated acceptance tests such as those developed using Fitnesse. It reduces risk and establishes fast and sustainable development.
 

Feature- and component-level continuous integration

An Agile team creates value only when the team members frequently integrate and test the results of their combined work. When integration happens frequently, it ensures that the different roles and functions on the team are actually able to produce a consistent output: the team's work for the increment.

Best practices call for members of an Agile team to integrate their work at least once per iteration, with preference toward an even more frequent cycle time. This continuous integration effort should be part of the team's velocity calculation, otherwise the team will fail to establish a sustainable pace.
 

Benefits of continuous integration

When CI works well, it helps the code stay robust enough that the customer/client and stakeholders can play with it whenever they like. It also encourages more feedback between programmers and the customer.

Like refactoring, continuous integration works well if you have an exhaustive suit of automated unit tests that ensure that you aren't promoting buggy code. One popular continuous integration rule states that programmers should never leave anything unintegrated at the end of the day, and the build should never spend the night in a broken state.
 

Suggestions for implementing continuous integration successfully

Integrate often

The more frequently teams integrate, the more quickly they find problems. They should do it often, eliminating impediments and adding automation along the way. This will result in faster learning cycles and less rework.

Make integration results visible

When the integration process breaks, everybody should know why it broke. And when it fixed, then they should know what fixed it, too.

Fixing a failed integration is a top priority

Attention should be directed immediately toward fixing the problem before adding new functionality. This way we can accelerate learning and decrease the impact of the underlying issue.

6 top continuous integration tools

  1. Jenkins: Jenkins was originally created as a Hudson project at Sun Microsystems. It is developed in Java.
  2. Buildbot: It is developed in Python.
  3. Travis CI: Travis CI is probably one of the easiest CI servers to get started with. Travis CI is open source and thus free to host on your own server.
  4. Strider: Strider is written in Node.JS and JavaScript and uses MongoDB as a backing store. MongoDB and Node.js are prerequisites for installing Strider.
  5. Go: Go was created and then open sourced by ThoughtWorks. As with other advanced CI servers, Go lets you distribute your builds across different systems and monitor them all in one place.
  6. Integrity: This was built on Ruby.

 

Opinions represent those of the author and not of Scrum Alliance. The sharing of member-contributed content on this site does not imply endorsement of specific Scrum methods or practices beyond those taught by Scrum Alliance Certified Trainers and Coaches.



Article Rating

Current rating: 4 (3 ratings)

Comments

Be the first to add a comment...


You must Login or Signup to comment.

The community welcomes feedback that is constructive and supportive, in the spirit of better understanding and implementation of Scrum.

 

Newsletter Sign-Up

Subscribe