View source | Discuss this page | Page history | Printable version   

Continuous Integration


Contents

Introduction

We have decided to use CI aka Continuous Integration, a software development practice where members of a team integrate their work often. We will go through the pro's and con's of CI and its impact within the organization. This wiki holds information related to the decision on requirement, tools, installation and road ahead w.r.t CI.

Continuous Integration

The term "continuous integration" refers to a process that builds and tests code on a frequent basis. The continuous integration servers constantly monitor source code repositories and as soon as new changes/commits are detected, they initiate a new build cycle. The build cycle actually involves code compilation and, in addition, may involve various tests and code analysis. If the process encounters errors, it notify the build master.

Steps

Caution

We cannot assume that we are safe from integration problem, CI is a supporting tool in the development/release cycle to detect defects early. The participation of development / QA team plays a very important role. Educating the importance of commit early commit often and detect errors early is the key. CI is not just a technical implementation; it is also an organizational and cultural implementation.

Who is gonna benefit

Developers: making software integration a nonevent, you can focus on what you love the most, which i assume is software development ;-)

Release/Configuration/Build Management: Help create deployable software multiple times in a day without waiting till the end of development sprint. In OB we have a sprint of 2 weeks. So at the end of 2 weeks we have a deployable software.

Testers/QA: Enable testers / QA to do incremental testing.

Managers: you can talk to customers with confidence and promise a working software.

Continuous Compilation Vs Continuous Integration

Continuous-ignorance.gif

Lets do it right

The following questions will answer if we are doing our CI correctly:

Selection of build tools

We had the following consideration for selecting the build tool. The tools should be:

What do we use and Why

Started with buildbot, the initial setup was done by stefan as a weekend activity, as he was familiar with it. We have not spend enough time on this tool to make it usable and at the moment we have decided to use hudson as primary choice for CI.

After a long internal / external debate we have zeroed in on Hudson as our new build tool probably because of following reasons:

Comparison of Tools

In this article we have tested and evaluated tools like Cruise Control (CC), Buildbot and Hudson. All three tools have the ability to build and test code.

Cruise Control (CC)

Remark: however, once installed and properly configured, it proves to be very powerful. The tool is extremely powerful and can be adapted in the enterprise environment with medium to large teams. Its UI is definitely lacking.


Buildbot

Remark: configuration is easy and can be accomplished in less than half an hour, but tweaking the master.cfg takes time. UI is very primitive, not sure of close integration with Java subsystems.

Hudson

Remark: It's relatively young, but very well designed and lots of Java community members involved (soon we will also be part ;-) ). Learning curve is relatively less and more over we have tons of third party plugins.

References

comparing-cruise-control-and-hudson

continuous integration tools in the open source world

Retrieved from "http://wiki.openbravo.com/wiki/Continuous_Integration"

This page has been accessed 30,022 times. This page was last modified on 2 February 2010, at 07:11. Content is available under Creative Commons Attribution-ShareAlike 2.5 Spain License.