The past decade or so has introduced significant changes to the software development industry. From the Waterfall model through agile methodology kicking in, and right down to DevOps, things have definitely changed. Nowadays, with DevOps, both development and operations happen iteratively and continuously up until the application is fully developed and deployed. Under these circumstances, it’s not surprising that CI/CD has become very popular in the industry and so have CI/CD tools (automation rules!). When looking at the CI/CD tools market, one could get confused by the wide selection available, but if you look at market share data, Jenkins is taking the lead (51.22%), followed by TeamCity (18.70%). Such impressive numbers require further examination, so I decided to focus on comparing Jenkins vs TeamCity. But first, I want to go over these tools briefly.
Originally created as a build automation tool for Java applications, Jenkins has evolved tremendously and is currently the de facto standard for continuous integration servers. Apart from the fact that it is open-source (free), it offers more than 1400 (yes, 1400) plugins for easy integration with other platforms and tools. The ease of use is another thing to note, as it is especially simple to install and set up (with a dashboard for project management, which can be easily accessed through any browser).
TeamCity is a commercial CI/CD server by JetBrains. Its slogan, “Powerful Continuous Integration out of the box”, is well justified as it offers an impressive set of features to match Jenkins’. It also provides integration to Jira for tracking issues with ease, and of course, it integrates with IDEs such as Visual Studio and Eclipse. Moreover, it provides .NET framework support and has a build artifact repository integrated into it, which stores the artifacts on the TeamCity server filesystem or on external storage. The free version of TeamCity – Professional server license provides 100 builds and three build agents at zero cost.
Jenkins vs TeamCity: Key Differences
Open-Source vs. Commercial
The most basic difference between Jenkins vs TeamCity is that Jenkins is an open-source continuous integration tool and TeamCity is a commercial tool. This obviously means that Jenkins project is supported by developers across the globe while TeamCity is maintained by its parent company, JetBrains.
Although Jenkins does not have plenty of built-in features, its huge plugin ecosystem provides tons of features that other CI tools cannot compete with. These plugins provide Jenkins with the ability to not only create builds, but also analyse the code in order to improve its quality.
TeamCity, on the other hand, offers some out of the box features apart from regular CI tool features. It provides support for different platforms such as .NET, Ruby, Java, etc. In addition, TeamCity allows you to easily build docker images, and the support of Jira and Bugzilla helps to easily track issues. Finally, it stores build changes and failure history to keep tabs on the statistics of the past, run past builds, and test history reports.
You need to have Java and Tomcat in place in order to install Jenkins. If both are there, the setup of Jenkins is easy and straightforward. After installation, you can configure Jenkins through the web interface it provides.
TeamCity installation is also easy: you just need to download the TeamCity server and follow the instructions in their documentation.
Jenkins’ interface is old school, meaning it’s not very attractive to look at (let’s just say it’s not the prettiest guy on the block). When you compare Jenkins vs TeamCity in terms of UI, the difference is pretty stark. TeamCity has a beautiful interface (that attracts a lot of beginners). It also provides options to pin, tag, and comment on builds for organizational purposes.
When we talk about integration, nothing beats Jenkins. One of the reasons Jenkins is so widely popular is because it integrates with hundreds of free plugins. Compared to Jenkins, TeamCity integrates with a small number of plugins (300+ plugins), but it offers few exclusive integrations, which add up to its “out of the box features”, such as integration with Docker to create container builds, integration with Jira and Bugzilla for issue tracking, support of .NET framework and cloud integration with AWS/Azure/GCP/VMware.
Distributed Execution is all about distributing tasks across other machines. You can process the builds in a distributed way in both Jenkins and TeamCity. Incredibuild integrates with both Jenkins and TeamCity to provide distributed processing technology, which speeds up the entire build process, from compilation to testing, packaging, and so on. TeamCity’s nodes scale to hundreds of cores, on-demand, whether by using on-premise idle CPUs you already own or by seamlessly provisioning additional cloud cores. Incredibuild essentially scales each of your build nodes to a super-computer node with hundreds of cores. With this huge number of on-demand cores, build nodes will compile—test, and run other build steps much faster.
With its integration to Incredibuild, TeamCity, for example, can bring down build execution times by 6X, from 60 minutes to 10 minutes. Jenkins presents impressive numbers as well: with its integration to Incredibuild it can bring down Jenkins builds from 15 minutes down to 2 minutes.
The upside of TeamCity being a commercial tool is that it has better security features than Jenkins. TeamCity integrates with the Snyk security plugin, which can perform vulnerability scanning in the build pipeline. It helps you identify and remediate all the risks and threats that are in your builds.
Jenkins also has several security plugins, but with limited functionalities, which is a bit unfortunate; being an open-source opens Jenkins up to various security vulnerabilities.
Jenkins is known for its big (dare I say huge) community which is far greater than TeamCity’s community. Being open-source, any developer can contribute to the Jenkins project. New developers keep on adding their contribution to this project every day. However, TeamCity is a commercial tool, and being such, it is maintained by the JetBrains team that provides a professional support community to grow this tool.
Being open-source, Jenkins is free to use – which is one of the main reasons why organizations go for it. They do not have to invest a single dollar in using Jenkins (and let’s face it, we love free stuff). TeamCity is a paid solution (though it has a free version) and offers two licenses – a Professional server license and an Enterprise server license. In a professional server license, you can use 100 build configurations and three build agents for free; any additional build agent and 10 build configurations will cost you $299.
The enterprise server license starts with three agents, which provides unlimited build configurations starting at $1,999.
Comparison Table – Jenkins vs TeamCity
|Developed By||Kohsuke Kawaguchi, Free and open-source software||JetBrains|
|License||MIT License||Proprietary commercial software|
|Features||· Hosted internally
· Workflow plugin
· Great to build, deploy or launch anything async
· HTML Publisher
· Throttle builds
|· Technology Awareness
· Key Integrations
· Cloud Integration
· Continuous Integration
· Code Quality Tracking
· Build History
· Build Infrastructure
· Version controls systems Interoperability
· System Maintenance
· User Management
· Pre-tested Commit
|Popularity||More popular||Less popular compared to Jenkins|
|Ease of Use||Yes||Yes|
|User Interface||Not that great||Has a good user interface|
|Community||Bigger, because it’s open-source||Smaller compared to Jenkins|
|Documentation||Easy to follow||Easy to follow|
|Pricing||Free||Professional Server license – $299 per build agent after three free build agents
Enterprise Server license – Starting at $1999
|Integrations||1400+ integrations||300+ integrations|
|Security||Less Secured||More Secured|
|Cloud||Supports majority of Cloud Providers||Supports majority of Cloud Providers|
|API||Supports RESTful API: XML, JSON, Python||Supports RESTful API using service messages and creates plugins using Open API|
|Programming Language Support||C, C++, Fortran, Java, PHP, Python and many more scripting languages||Java, .NET, Ruby, Python, C++, PHP, Node.js and more|
|Container Support||Using Docker plugin for Jenkins||First-class Docker support out of the box|
|Release Cycle||More frequent||Less Frequent|
|Reporting||Provides detailed report for builds and tests||Provides reports with better web UI|
This comparison of Jenkins vs TeamCity is meant to help you choose the right CI tool for your needs. This choice is not simple, nor is it easy, as both solutions have unique features and benefits. If after reading this post you’re still in doubt, go ahead and give both solutions a try (you can use TeamCity’s free version). As great as this comparison might be, nothing beats creating a few builds on these platforms and experiencing the benefits (and weaknesses) on your own.