The past decade has brought much in the way of build and deploy applications. Some of them have managed to stay at the forefront of the options available for CI/CD as evidenced by their current market share. When comparing Jenkins vs Bamboo, the choice of what a team uses has much to do with the level of experience and the need to integrate with a specific workflow. In this article, we will discuss the two of these products to point out their shared strengths and differences.
Jenkins Serves Up a Solid Build System
Jenkins is the java-based build application that many of us have encountered during our tenure as DevOps engineers. The open-source, feature-packed build application is the result of years of community involvement. As such, we see a usage level as high as 51% in our industry according to this information.
The build application became very popular at a time when many deployment packages were created on a developer’s workstation. Experience has taught us that things involving a manual process are prone to error. Often it would require someone with “tribal” knowledge to package it correctly. Engineers were doing what they could to automate software builds and create seamless processes to take the place of manual intervention.
It may not be entirely correct to compare Jenkins vs Bamboo in all aspects; Jenkins is traditionally a system used to build software packages in preparation for deployment. Its main job is to create a binary package consistently. The release itself is usually handled by other portions of the CI/CD pipeline to manage each deployment target and their various configuration aspects.
Bamboo carries things a bit further and provides the means to deploy the package to its intended targets. Jenkins is desired by some development teams who want to separate build from deployment while still maintaining a reference to the original change request. These engineers employ Jenkins along with necessary plugins to integrate with various artifact targets or to link back to their project tasking system.
Learn more about what is Jenkins.
Growing Bamboo for Build & Deploy
The group at Atlassian have been at the forefront for DevOps and software delivery automation for quite some time. Companies using their JIRA project management product often use other products in their stack to complement the JIRA system. Atlassian acquired BitBucket in 2010 which started their journey into hosting code. They eventually extended it with products like Bamboo and worked to provide a more seamless integration with their BitBucket Git repository.
In contrast to Jenkins, Bamboo natively supports some of the aspects of automating Git workflows. Since they also provide BitBucket as a Git repository, it only seems fitting that they easily integrate the two. Some companies prefer to use other systems like GitHub or GitLab for their code. Both Jenkins and Bamboo support integrating with these platforms to perform necessary build tasks. This is similar to what we discussed in our article on Jenkins vs TeamCity.
If you look at Jenkins vs Bamboo as it pertains to ease-of-deployment, Bamboo provides the most benefit between the two. The build and deploy aspects are under one umbrella. With various gating aspects and the ability to connect to multiple cloud and on-premise systems, Bamboo allows software to be delivered to the final destination smoothly. It is also attractive to some teams due to a cohesive user experience across their products.
As we touched on earlier, it is possible to just use the build portion of Bamboo. By doing this, users can take advantage of some of the other features available. For example, Atlassian provides a high level of connectivity and enterprise-class support. On some teams, The Bamboo product supports permissioning that allows for finite control on all operations and administrative functions. While achievable in Jenkins, releases can be tricky to manage and may require additional plugins for this type of interoperability.
Jenkins vs Bamboo – Let Us Compare Apples to Apples
Focusing on the similarities of the two build systems, we can immediately see how Bamboo benefits from being offered as a commercial product from Atlassian. Many companies require strict standards around “time to delivery for their customers”. There may be times when a software fix is required sooner than expected. In those instances, having enterprise support available ensures any issues during the build process are backed up by additional personnel.
This is critical to some development teams but there are many benefits recognized by using the community-driven, open-source alternative. Jenkins and its associated agents are easily installed and deployed via Docker and even Kubernetes to help with resource scalability. The ability to have more control over the number of agents is a place where Jenkins may become more attractive.
Both systems allow for specific agent types to support building software packages. The agents connected are configured to be on-demand with prerequisite build tools already in place. Being able to expand the number of build agents in this fashion helps keep build times lower. The deciding factor for some may be around licensing costs.
Atlassian has a model that allows for a certain number of agents up to a purchased amount. In Bamboo, if all of the licensed agents are busy, spinning up another agent will not allow for additional builds to complete. Jenkins will also support the dynamic creation of agents but is limited only by available resources.
While not a focus of this article, Jenkins X has been recently developed and provided to the public. This open-source project is an extension of the Server version of Jenkins. It promises to include many of the same features as Bamboo with the same community support enjoyed by the current Jenkins user base.
|Pricing||Free||Free Basic / Per-User|
|Founded||2011 (Initially Hudson in 2005)||~2012|
|Hosting||Self-Hosted / Jenkins X||Self-Hosted|
|Ease of Use||Intermediate||Basic|
|Project Integration||Plugin Dependent||Native w/Atlassian JIRA|
|Cloud Integration||Via Plugins / Jenkins X||BitBucket Pipelines|
|Language Support||C, C++, Fortran, Java, PHP, Python||.NET, Java, PHP|
Jenkins vs Bamboo for Project Integration
Once again, we will call out an aspect of this comparison that may lean towards Bamboo, as it is a native application to the Atlassian stack that includes JIRA. JIRA is a project management platform that allows for integration throughout the Atlassian product landscape. Tight collaborative integrations with built-in tooling for branching workflows make this a popular choice for many companies.
You may be wondering why tight integration with your project and tasking system is so important. Quite simply, it is to provide breadcrumbs back to where the problem or feature was originally reported. That trail of breadcrumbs can be very useful for diagnosing newly introduced defects. A similar product that integrates to this level is discussed in the article comparing Azure DevOps vs. Jenkins.
Since Jenkins benefits from having such widespread usage, many plugins exist that will allow for integration with other systems. What your team needs is likely available by way of the community. Thankfully, it is driven by professionals that work together on the open-source product to fit into many different scenarios. In other words, what you want to accomplish has likely already been done. There’s no need to reinvent a specialized process.
A Parting Thought
When comparing these tools, we can see they are quite different, indeed. When evaluating a new addition to your CI/CD stack, all factors should be considered. While some may need the end-to-end solution that Bamboo provides, others may need the separation and control afforded by a build system like Jenkins. As with most cases, doing proper due diligence and cost-benefit analysis is critical. Continue your quest for more information, create proofs-of-concept, and try to consider scenarios you may not have considered. A full end-to-end solution will eventually develop.