This post originally appeared on the Scout blog.
Software development has changed rapidly over the last ten years. Many companies have moved away from the traditional waterfall development model to an agile methodology, and this has meant embracing continuous integration and continuous delivery practices. But how about taking it one step further with continuous deployment? Are you deploying to production automatically, without any human intervention? Some of the major products we rely on everyday are. We take a look at some of the best continuous deployment tools and put them head-to-head.
Before we get started with discussing continuous deployment tools, let’s take a moment to clear up any confusion that you might have in regards to these three similar and related acronyms: CI, CD and, well, CD again!
Continuous integration (CI) encourages all developers to frequently check in their code changes into a single master branch. It aims to avoid the challenges that large teams face when trying to integrate code when working across multiple versions and branches. The idea is that when a developer opens a pull request, an automated system can trigger a build process that runs all the system’s tests and then deploys a production-like system for inspection. The idea is that these systems are as similar to production as possible and developers avoid wasting time on an ‘integration hell’ situation when they try to merge too much code at once.
Continuous delivery (CD) is a software development methodology born out of the agile software development movement. The aim of continuous delivery is that your software is always in a deployable state, ready to be released at any given moment. Small, simple releases are pushed out to the user rapidly, feedback on these changes is received, and then the cycle repeats. This is in stark contrast to the traditional waterfall model of software development where the development flows from one team to the next in a slow, gradual fashion. With continuous delivery, automation is used to streamline this process, but deployment of the production system is done manually.
Finally, continuous deployment (also CD!!) then, is another way for teams to achieve this constant continuous delivery. It takes the process one step further by automatically deploying to production when a certain step, such as a merge to the master branch, occurs. This all occurs without any human interaction. Many teams use continuous delivery and continuous integration, but fall short of adopting continuous deployment, instead preferring to push the deploy button manually. But that too is changing, as these days many companies are going that extra step further and using their customers as the testers for there newest features by using continuous deployment in their workflow!
Let’s round-up the most popular continuous deployment tools around today and see what they can offer you.
Let’s start with the most popular CI/CD tool on the market, Jenkins. Jenkins styles itself as an open-source continuous integration server with over 1000 plugins which allow it to be tailored to many different use cases. For example, if you wanted to embrace the continuous deployment methodology, then one popular route is the Blue Ocean plugin.
Being free and open-source, Jenkins is a great choice if you are concerned about the cost of some of the other solutions; plus it’s very widely used and so there are a plethora of plugins and documentation available.
Bamboo is a continuous integration and continuous deployment server solution from Atlassian, the company behind Bitbucket (source control management) and Jira (issue tracking). If you are already using Bitbucket and Jira, then the integration with Bamboo would be very convenient.
Prices start from $10 per month for a basic plan, but the cheapest professional-grade plan starts at $1,100 per month and scales upwards depending on how many build agents your require.
TeamCity is the continuous integration and continuous deployment solution offered by JetBrains, the popular IDE developer. It has a slick and easy-to-use interface and is packed full of useful features.
A free “Professional Server Licence” including 3 build agents might be sufficient for small teams. After that, enterprise licences start from $1,999.
Unlike most of the competition competing in this space, Octopus Deploy focuses on just the continuous deployment side of things, leaving the continuous integration aspect to other software solutions.
Traditionally Octopus Deploy provided support to just the .NET world, but it has since expanded and now supports a fair amount of other languages. The cheapest cloud plan starts from $45.
GitLab offers a complete solution to continuous integration, delivery and deployment, all inside a single interface that integrates with their Git source control system. It’s an impressive array of tools and, similar to Atlassian’s Bamboo, if you are already using GitLab then the all in one integration process would be a strong deciding factor here.
The price point for GitLab is also very reasonable compared to the competition. You can choose to self-host or use GitLab’s SaaS, with prices ranging from free up to just $99.
DeployBot feels like a much simple and easy solution then many of the other options we’ve mentioned here. All you need to do is sign up for an account and hook up your source code repository and hosting solution and then you are ready to go with manual or automatic deploys.
And whilst we are talking about simplicity, the pricing is also simple too! There is a Free, Basic ($15), Plus ($25) and Premium ($50) plan to cover a wide range of needs.
As you can see there are a lot of options available for continuous deployment in 2019. Furthermore, these options often overlap with continuous integration options making for a very confusing landscape. What works best for you will depend on a number of factors such as cost, features, and how it fits in with the other software in your stack. We’ve summarized the key points for you in the table below.