A deployment pipeline is one of the most critical pieces of infrastructure in an application environment. Without it, agile software development feels more like the old waterfall model, as you labor through the standard cycle of develop, test and deploy. This is where a reliable CI/CD pipeline comes into play.
Most cloud-focused organizations have adopted continuous integration and continuous delivery (CI/CD) pipelines to automate many of the processes associated with software development. These pipelines reduce the lead-time from development to deployment from months to hours, but only if you pick the right CI/CD tool.
CI/CD is one of the most established categories of DevOps tools, and IT teams can choose from an extensive number of third-party CI/CD offerings. There are managed options that specialize in a single technology stack and self-hosted tools that offer more customization. There are also CI/CD tools that run through a collaborative code repository, such as GitHub. But having access to all these options makes it hard to know which tool best fits your needs.
In this third-party CI/CD tool comparison, we'll go over the three types of tools and some of the top options in each category. This should give you an idea of how CI/CD can help your organization.
Third-party vs. cloud-native CI/CD tools
Before we get into the third-party tools, let's first distinguish them from what's offered natively on the major public clouds. AWS, Microsoft and Google each offer their own CI/CD pipeline tools -- including AWS CodeBuild, Azure Pipelines and Google Cloud Build -- tailored to their platforms. These services often lag behind third-party CI/CD tools, whether it is due to a lack of support for a given technology stack, poor version control integration or limited feature sets. The cloud-native options can also increase vendor lock-in and make it difficult to adopt a multi-cloud infrastructure.
Unlike the cloud vendors' offerings, third-party CI/CD tools integrate with a wide range of other tools and services. This gives you more flexibility because you're not limited to a single cloud vendor or a small subset of languages and tool support.
Managed CI/CD tools
Application development takes a lot of work. Larger organizations can often adapt to growing infrastructure needs, but smaller companies are not always so fortunate. Managed offerings are an excellent way to bootstrap a CI/CD pipeline.
Travis CI, CircleCI and CodeShip are popular managed CI/CD tools that, for a fee, take care of server management, patching, dependencies and other tasks, so you can focus on moving code into production. Each tool takes its own CI/CD pipeline approach, but at a high level, they're easy to configure and support an impressive number of integrations.
However, be mindful of your usage. While these tools are generally affordable at a small scale, they get more expensive as your infrastructure grows. Organizations often move from a managed CI/CD tool to a self-hosted offering when their infrastructure permanently scales up.
- Pros: Low overhead, easy to use and flexible
- Cons: Potentially high cost, closed source and vendor-dependent
Self-hosted CI/CD tools
Organizations can manage CI/CD themselves if they don't want to trust a third-party provider to host, maintain, manage and secure their delivery pipeline. This provides more flexibility, as well as more responsibility.
As with all open source projects, one of the biggest advantages is that it's free. However, you do have to pay for the infrastructure it runs on, which can become costly if you aren't careful with the resources your pipeline requires.
- Pros: Highly configurable, open source, free and security is in your control
- Cons: High overhead and requires infrastructure management
Collaborative code repository CI/CD tools
The final CI/CD category worth highlighting is CI/CD tools built around collaborative code repositories such as GitHub, GitLab and Bitbucket.
These CI/CD tools are popular with companies that already rely on these vendors, as this can simplify the collaborative aspect of software development. Tight integration between the code repository that development teams rely on and the build process that validates that code can make a big difference in the dev-test cycle time.
However, these tools are not as mature as other, more extensive options on this CI/CD tools list. While GitHub, GitLab and Bitbucket introduce a lot of flexibility through Docker-based configuration -- a tactic supported by the majority of CI/CD tools -- this CI/CD capability is intended to be a supplemental feature of their primary version-control system. These collaborative code repository CI/CD tools can feel limited compared to the managed and self-hosted options.
- Pros: Tight integration between build results and code changes, collaborative, low overhead and cloud-provider agnostic
- Cons: Tied to a version-control system provider, potentially high cost and limited functionality
Find the right fit
Focus on the tool that can best grow with your needs. If your infrastructure growth is slow and predictable, a managed service like Travis CI or CodeShip should work. If you are in a rapid-growth state, then a self-hosted option will scale more cost-effectively. And, if you want to keep your code and build tools all together, rather than spreading yourself too thin, consider the CI/CD tool available through your code repository provider.