TeamCity vs Jenkins vs Bamboo: A Breakdown
By Hamid Akhtar, Community Contributor and Shreya Bose, Technical Content Writer - February 25, 2020
When software is being built, the codebase is continuously expanding. Unless effectively managed, navigating through the code becomes almost impossible. To deal with this issue, software engineering has adopted the practices of continuous integration (CI) and continuous delivery (CD).
- Continuous Integration is an engineering practice in which members of a development team integrate their code at a very high frequency. Teams implementing CI aim to integrate code daily or, in some cases, even hourly.
- Continuous Delivery is the practice of ensuring that code is always in a deployable state. This means that all changes to code – new features, bug fixes, experiments, configuration changes – are always ready for deployment to a production environment.
To implement CI/CD, nothing is more important than picking the right tool. This article discusses the differences between three of the most popular CI/CD tools in current usage. Since the market is flooded is thousands of tools, making the right choice can be overwhelming. This article tries to make things easier by comparing three best-of-breed tools: TeamCity vs Jenkins vs Bamboo, so that readers can make an informed decision with minimal effort.
What is CI/CD?
Continuous Integration(CI)/ Continuous Delivery(CD) refers to software development and testing infrastructure that aims to deliver a quality application with minimal time and effort. This mechanism allows development teams to integrate, validate, fix bugs and deploy code automatically to the production environment.
The Goal of CI/CD
- To provide rapid feedback about code quality to developers
- To automate testing and building a document trail
- To allow developers to spend maximum time coding rather than testing on integrating new code with the existing codebase.
Having understood the concept of CI/CD, let’s dive into a detailed view of three popular CI tools – Teamcity vs Jenkins vs Bamboo
Jenkins
Jenkins is a leading open-source CI server with plugin welfare for CI/CD purposes. Written in Java, it helps in building and testing software. It allows developers to integrate into various stages of the DevOps process cycle – building, documenting, testing, packaging, staging, deployment, static analysis and much more. Jenkins is a widely used tool with global support.
- It supports 1000+ plugins and is portable to major platforms and operating systems like Windows, OS X, Linux, macOS, Chrome, Internet Explorer, Firefox, RedHat, Ubuntu, etc.
- To integrate any particular tool with Jenkins, simply install the right plugin. For example, Git, Maven 2 project, Amazon EC2, HTML publisher, etc.
- Jenkins is quite easy to configure. For example, one can configure alerts with Jenkins in multiple ways. When someone receives an email, the notifications, pop-ups can be automated by implementing the right configuration. Devs can receive immediate feedback and know immediately when the build breaks, why it breaks and it can be fixed.
How does Jenkins work?
Let’s discuss a scenario where the complete source code for an application was built and deployed for testing.
- A developer commits code to the source code repository
- Jenkins server checks in at regular intervals at the source code repository for changes
- If there is any change, Jenkins server detects it, pulls the changes and starts preparing a new build
- If the build fails, Jenkins notifies the development team. If the build is successful, Jenkins deploys the code to the production server
By configuring the script to run, one can create the build with several steps
- Prepare
- Test
- Package
- Publish
- Deploy
- After running the script, Jenkins generates feedback on whether the artifact is valid and notifies developers about build and test results
- Jenkins continues the process of checking the source code repository and repeats the process detailed above.
Advantages of Jenkins
- An open-source platform
- Free of cost
- Easy maintenance as it has a built-in GUI tool for updates
- Supports 1000+ plugins
- Widely spread tool with global support
- Dynamic runs in-built for multiple branches
- Portable to all major platforms
Compatibility
- Jenkins supports built-in deployment project
- REST API
- Test automation via plugins
- Enterprise-grade permissions via plugins
Bamboo
Bamboo is an automation server for continuous integration that automatically builds, integrates, tests the source code and prepares the application for deployment. It is a licensed tool that provides end-to-end visibility over the entire development, testing, and deployment process. It can be used with various tools, GUIs and allows the development team to implement continuous integration methodologies.
Bamboo provides built-in deployment support, powerful build agent management, automated merging, and built-in Git branch workflows.
Advantages of Bamboo
- Excellent integration with Jira, Bitbucket, Crucible, Fisheye and hundreds of other tools.
- More user-friendly than most CI/CD tools
- Supports different platforms and operating system like Windows, Solaris, Internet Explorer, Firefox, Linux, etc.
Compatibility
- Built-in Jira software integration
- Built-in Git branching workflows
- Built-in BitBucket server integration
- Built-in deployment project
- REST API
- Test automation via built-in features
- Enterprise-grade permissions via plugins
TeamCity
TeamCity is a CI server written in Java. It allows developers to integrate, code, and is easier to configure with simple steps. On TeamCity parallel builds run simultaneously on different platforms and environments. The robust set of out-of-the-box features and the plugin ecosystem are the key features of TeamCity. It is also a licensed tool that has a stunning UI.
Advantages of TeamCity
- Provides several ways to reuse the settings of a parent project in a subproject
- Takes the source code from two different version control systems(VCS), for a single build
- Can detect builds which are hung
- Provides ways to highlight builds for follow-up purposes
- Runs the parallel builds simultaneously on different platforms and environments
- Helps to automate sections of the testing process so that lesser manual testing is required
- Supports different platforms like Apache Tomcat server, Windows, Linux, Ubuntu, Debian, RedHat, SUSE.
- Is more user-friendly and has global support
What to look for when choosing the right CI CD tool?
- Hosting: Where is the tool hosted? Cloud-based tools require minimal configuration and can be adjusted according to the customer’s needs. When it comes to self-hosted solutions, the responsibility for maintaining it rests with the in-house DevOps team. The former options minimize setup complications, while the latter offers greater flexibility.
- Integrations: A good CI tool should be integrated with other tools commonly used in the development process. This may project management tools (Jira), incident filing tools (Bugzilla), legal compliance tools, static analysis tools, etc. It must also support build tools (Gradle, Maven) and VCS (Git, Perforce).
- Since integrations are so important, they are a prime feature of BrowserStack offerings. BrowserStack offers integrations with a wide range of CI/CD tools so as to make developers’ lives easier. In fact, there are integrations with Jenkins, Bamboo, and TeamCity, as well as a large number of popular tools and frameworks.
- Usability: A well-designed interface makes the build process much easier. One looks for a straightforward and clear-cut UX and GUI.
- Container support: Tools that have a deployment plugin or are configured for container orchestration tools (Docker, Kubernetes) have an easier time connecting to an application’s target environment.
- Reusable code library: Always choose a tool containing a public library of numerous plugins and usable build steps. This can be open-source or commercially accessible.
TeamCity vs Jenkins vs Bamboo: Differences
Features | TeamCity | Jenkins | Bamboo |
Pricing | Free for 100 build configuration. It starts at $299 per year after 100. | Free | It starts at $10 with limited experience. Licensed versions cost $880 for one remote agent |
Origin | Java | Java | Java |
Ease of set-up | Easy
| Easy Only 3 steps if Java and Apache TomCat are already installed.
| Medium After installing Java and creating a dedicated user to run Bamboo, do the following:
|
User-friendliness | More user-friendly with out-of-the-box usability. | Less user-friendly as Jenkins is based on functionality. Developers need to customize, create, and choose a variety of plugins | More user-friendly as it has an intuitive User Interface. Provides proper guidance throughout the plan’s build and deployment states |
Documentation | Excellent online documentation | Excellent online documentation | Good online documentation |
Platform dependency | Supports different platforms – Apache Tomcat server, Windows, Linux, Ubuntu, Debian, RedHat, SUSE | Supports different operating system and browsers – Windows, macOS, RedHat, Ubuntu, Chrome, Internet Explorer, Firefox | Supports different operating system and browsers – Windows, Solaris, Linux, Internet Explorer, Firefox |
Support | Provides Global support | Provides Global support | Provides support to Licensed users |
Plugins Support | More than Bamboo less than Jenkins. Discover TeamCity Plugins | It offers speed and more than 1500+ plugins. Discover Jenkins Plugins | 100+ plugins Discover Bamboo Plugins |
Hosting | On-premise | On-premise/cloud-based | On-premise |
What type of developers will prefer to choose – TeamCity or Jenkins or Bamboo?
Who should choose TeamCity? | Who should choose Jenkins? | Who should choose Bamboo? |
Developers looking for an extraordinary interface, out-of-the-box functionality, simple and easy set-up tool | Developers looking for a cost-free, open-source and popular CI solution with maximum functionality and global support c | Developers who are using Bitbucket and JIRA and are ready to spend for CI solution to utilize the branches safely |
Automated testing, especially automated selenium testing is an absolute necessity for software development. To streamline automated testing for minimal effort and maximum results, it is important to choose and use a CI/CD tool that meets an organization’s/project’s requirements. By studying the points outlined in this article, stakeholders can make an informed decision about what to use, and how to make it serve their purposes.