When considering Continuous Integration (CI) for your project, you have to think of tools that are readily available out there. Few such names that comes to our attention are Jenkins (Hudson), Bamboo, etc that are widely used by some of the major companies in the world. Recently I was involved with trying out Bamboo and Jenkins. Jenkins is an open source CI tool written in Java with more than 400 plugins available to extend its use. Bamboo is a commercial product from atlassian. It also has multiple plugins to customize its usage. Further we can also extend the functionality of both the above products by writing our own plugins using the SDK’s provided.
Both Jenkins and Bamboo supports multiple build tools that are available today, such as Maven, Ant, Make etc. Bamboo has support for both Maven2 and Maven3. Also we can run multiple projects builds with different version of Maven at the same time. Jenkins also has the same support where we also can specify different local maven repositories for different builds. This is a major advantage that these tools provide. Another point to note that we just have to give the source repository location of project when creating a new build (both the tools use different term for a new build, Bamboo – PLAN, Jenkins – JOB), then the CI tool will fetch the source files. Both these tools support almost every VCS available, such as Git, Subversion, etc. We can also specify some additional parameters when defining a new build, such as java heap memory, maven optional parameters (MVN_OPTS), so that we can allocate and fulfill the requirements.
We have to specify the goal for a build, such as maven or ant goal for each build. These tools allows to add multiple post build actions. So when a build fails or succeeds we can define what should take place, such as run tests, process test reports, code coverage reports and data visualization documents. This allows to create a pipeline structure for your build so we can break the build process into multiple steps which will makes the process easy to monitor.
We can setup these systems to send mails automatically, so that we can find out what is the status for each build. Bamboo even allows to integrate both way instant messaging so that we can instantly monitor the build.
Bamboo has a nice UI compared to Jenkins, but moreover both these tools provide almost same functionality and there are no any major deference in these tools. Some advantages that we can find is that since Bamboo is an atlassian product, the integration of JIRA issue tracker and Clover, the code coverage tool, becomes easy with bamboo. Jenkins has a set plugins to create dashboard like view for each of your build. We can add several gadgets to this dashboard which can show the statistics of a particular build or aggregated for all the builds.
Finally on my point of view, both these tools are same when comparing each other on functionality wise. The choice will depend on the need and the requirements at hand.