Continuous integration
November 9, 2008
In this web article Martin Fowler, author of several popular books on topics such as refactoring and test-driven development, explains the agile practice of continuous integration (CI). CI is the process of committing and integrating frequently (at least once per day). This allows development teams to find bugs quickly and increase communication.
As Fowler points out, the basic idea is that team members divide their work into small chunks and commit them frequently, possibly every few hours. Developers do this by first checking out the current repository after they have finished their work chunk, then building and testing a local build and finally, if everything works fine, commiting the changes to the server. After commiting, the complete build is tested on the integration machine.
Obviously, CI requires a well-defined test suite, which is why CI works hand-in-hand with test-driven development methods. Additionally, very good automation mechanisms are necessary in order to avoid unnecessary maintenance overhead. Fowler devotes several sections to this topic.
Continuous integration has several advantages. Above all, it allows the development team to find bugs very quickly, as developers constantly test how their code interacts with the code from other developers.
As I have come across this topic recently in several presentations of different companies (among them Ericsson), who all name continuous integration as one of their major practices, I think this is a very interesting article with a huge relevance in the industry. It is definitly worth reading.
Link to the article:
Continuous integration
Entry Filed under: Web article. Tags: Agile, Automation, Build, Continuous integration, Quality, Source control, Test-Driven Development.
1 Comment Add your own
Leave a Comment
Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
1.
Jay Harris | November 10, 2008 at 14:10
Continuous Integration is absolutely all of this, but there is even more to it. Through “automated deployments” and “making it easy to get the latest deliverables”–two of Fowler’s other components of CI–it is easy for the QA team to get at the latest bits and test the application. Also, another of Fowler’s items, “everyone can see the results of the latest build,” the management teams have visibility into the state of the application, helping them make decisions, such as those surrounding deployment to a staging or production environment, or when to begin client testing.
For anyone interested in further reading, I recommend Martin Fowler’s online article on continuous integration or Paul M. Duvall’s book on the same topic.