The need for speed in the software development cycle has given rise to a number of valuable automation tools for developers. Chief among these tools are those aimed at facilitating the continuous integration and continuous delivery of software projects. Through these CI/CD tools, development teams can keep software up-to-date and quickly put it into production.
Jenkins is among the best-known CI/CD systems, and it is fast becoming the engine for devops, managing the dev side. A key benefit of Jenkins is the wealth of plug-ins developed for it, providing capabilities that range from extending the number of version control systems Jenkins supports to accommodations for IBM mainframes. Spun out of the Hudson project first launched by Sun Microsystems, Jenkins recently hit Version 2, with improvements to its usability and security.
But Jenkins isn’t the only option when it comes to continuous integration and continuous delivery. Companies such as CircleCI, GitLab, and JetBrains also offer worthwhile CI/CD tools for developers to choose from.
Following are several options beyond Jenkins for automating your software delivery processes.
Atlassian Bamboo offers a wealth of capabilities, ranging from building and deploying Docker containers to running applications on Amazon Web Services. Dedicated agents can be used to run hot fixes and critical builds immediately. Scalability has been viewed as a thorn in Jenkins’ side; here, Randall Ward, CEO of Appfire, an Atlassian business partner that provides add-ons and services, sees an advantage for Bamboo.
“Atlassian has really broached the subject of scalability,” Ward says. The company has worked with Jenkins users and finds them suffering “major performance roadblocks,” he adds. Bamboo scales via polling agents and extended agent capabilities, Ward says. Appfire uses Bamboo as a Swiss Army knife of sorts, for integration testing with third-party add-ons and components, as well as for deploying code.
Bamboo features code visibility, enabling users to see a full roll-up of code changes since the latest previous deployment. It integrates with other Atlassian products, including the Bitbucket Git code management solution, Jira project management solution, and HipChat team chat application.
CircleCI also emphasizes scalability, in addition to its ability to test everything, ranging from thousands of Jasmin unit tests to mobile apps. Accommodations for Docker are featured as well, with CircleCI helping developers bring Docker files to production.
“It’s very similar” to Jenkins, says CircleCI CEO Jim Rose. It provides an orchestration layer and a workflow tool that automates code changes and pushes them to the data center, he adds. Begun in 2011, CircleCI started out as a multitenant SaaS option. It was a replacement for Jenkins where users did not have to manage their own servers. Single-page Ruby, Python, and AJAX apps were its forte. It can now be deployed behind the firewall. As opposed to Jenkins, which is open source, CircleCI is a commercial solution.
CircleCI can scale beyond what Jenkins can handle, Rose says, claiming that Jenkins can be challenged when dealing with an increasing load on infrastructure as application development teams speed up their work. “The only way to make Jenkins scale is to essentially stamp out more versions of Jenkins,” he says, adding that development teams then have to manage all of these deployment pipelines with Jenkins. With CircleCI, configuration is done at a code rather than server level.
The forerunner of Jenkins itself, Hudson has been under the jurisdiction of the Eclipse Foundation since Oracle turned over the project five years ago. Oracle inherited Hudson when it acquired Sun Microsystems in 2010, but the Jenkins fork emerged after developers did not see eye-to-eye over the project’s direction under Oracle. Recently upgraded in February, Hudson is written in Java and runs in a servlet container such as Apache Tomcat. It can work with version control tools such as Git and Subversion.
"In the Hudson team we are committed to enhancing Hudson on an ongoing basis with a particular focus on making Hudson a suitable platform for continuous delivery as well as continuous integration,” a representative of Eclipse says. “As such, you will see new features come into the tool that relate specifically to the needs of large enterprises to use Hudson at scale and as part of complex build pipelines."
One Hudson user, Cleo, which provides business integration software and services, evaluated Jenkins as a replacement for Hudson because Jenkins was maintaining most Hudson plug-ins, according to a case study from Eclipse. “We abandoned this idea after seeing that Jenkins’ core functionality was less reliable than Hudson’s,” said Stuart Lorber, a Cleo release engineer, in that Eclipse study.
Available as SaaS or behind the firewall, the open source GitLab CI can execute on any platform that supports the Go language, including Unix, Windows, and OS X. It features parallel builds with builds split over multiple machines. Users can automatically scale up and down VMs for immediate processing and minimized costs. Other capabilities include multilanguage support, real-time logging, a pipeline for defining multiple jobs per stage, and Docker support, for testing and building Docker images. The company also sees scalability as an advantage.
GitLab CI, which is part of the GitLab code-hosting platform, is intended to provide easy setup for continuous integration, says GitLab CEO Sid Sijbrandij. “Setting up CI used to be tedious, and we want to make it very very simple.” GitLab CI does not require a lot of administration, he adds. Tests are executed on GitLab Runner, which was written in Go and provides multiplatform, multilanguage capabilities.
Because GitLab CI is integrated with GitLab, users do not have to set up new projects. Users add a file to describe how you want to test the repository. While acknowledging Jenkins as a competitor, Sijbrandij declined the opportunity to say why his platform would be the better option. “I greatly respect Jenkins.”
The JetBrains TeamCity CI/CD server integrates with tools such as the Apache Maven build manager and JetBrains’ own YouTrack issue tracker. “Its main selling points over other solutions is that we provide the full experience with most of the functionality that other platforms provide as plugins, built-in,” says Hadi Hariri, JetBrains vice president of developer advocacy. “In addition, of course, we have plug-in support too with many community contributions.”
TeamCity, which is not open source, also features a Web interface and administration capabilities such as providing snapshots of dependencies between builds, artifact dependencies, and build configuration templates for reuse of settings.
The platform has IDE plug-ins for Eclipse, Microsoft Visual Studio, and JetBrains IntelliJ. It also offers on-the-fly test reporting. “TeamCity is a product that's been around for 10 years. It was born out of a need inside JetBrains and has evolved to a very mature product that is used by customers large and small,” Harir says. “It's definitely a tool that grows with your needs. You can have the simplicity of configuring a CI project with a single operation and be up and running, to growing across multiple servers and handling hundreds of agents. It scales.”
ThoughtWorks GoCD is an open source continuous delivery system that features visibility into and modeling of workflows and visualization of the value stream, as well as the ability to compare builds. It provides a “bill of materials” for deployment. An agent grid, meanwhile, offers parallel execution across pipelines and versions; templates enable reuse of configuration pipelines. “It supports CD quite richly out of the box; you don’t need to install a bunch of plug-ins to get moving,” says David Rice, managing director at ThoughtWorks.
GoCD, Rice adds, differs from Jenkins in that it is about deployment pipelines and how to make continuous delivery easier. “That’s not where Jenkins is coming from.” GoCD can be installed on premises or be set up in the cloud.
ThoughtWorks Snap provides cloud-based continuous integration and delivery features. “Snap is for people who are operating completely in the cloud,” says ThoughtWorks’ Rice. It is targeted toward users who “don’t want to have any infrastructure at all,” he adds. Hosted deployment pipelines can be set up from cloud platforms, including GitHub, Amazon Web Services, DigitalOcean, and Heroku. Pull requests are tested to verify that they will merge cleanly.
Snap is free for use with public repositories on GitHub; there is a charge to use it with private repositories. Recently, Docker support was added to Snap, where Docker images can be used throughout the software delivery pipeline and deployed. Better support is planned for Docker Compose to aid in running multicontainer environments.