Continuous delivery is the process of systematically keeping code deploy-ready at all times. This shift in release process requires several changes in the operations of the development team, from improving automated testing to implementing Agile and DevOps processes.
But above and beyond these changes, having the right tools to facilitate your new continuous delivery processes is crucial to your success. This article explains some of the most popular tools used by software development teams implementing not only continuous delivery, but also continuous integration and continuous deployment, since there is significant overlap.
Version Control Systems
Continuous integration—the process of merging every new code change back to trunk—is, though not strictly necessary, incredibly useful for continuous delivery and deployment. Version control systems (VCSs) are central to continuous integration because they help development teams to track which changes were made when and by whom, to eliminate bugs or potential problems as early as possible. Perhaps the most well known version control tool is Git (and its online repository Github), but there are several other popular ones, such as Subversion and Microsoft’s Team Foundation Server.
Continuous Delivery and Deployment Tools
One of the most popular tools for both continuous delivery and integration is Jenkins, an open source, server-based, plugin-rich application created in Java which automates many parts of the software delivery pipeline. Jenkins is particularly useful for distribution across systems that are on different platforms and its extensible automation allows it to be used as a continuous delivery hub.
Bamboo, an Atlassian product, is an on-premises server for continuous integration, delivery, and deployment which allows you to create multi-stage build plans and run parallel automated tests. It integrates seamlessly with Jira, Fisheye, and Hipchat. The Java Secure Channel is a particularly useful tool for continuous deployment in particular, since it provides deployment automation. Other continuous delivery tools include AzureDevOps, Harness, and XebiaLabs.
Continuous Integration Tools
There are many specific tools which provide frameworks for continuous integration, such as Travis CI and CircleCI. Both of these tools integrate with Git to provide a seamless experience for the thousands of developers already using it as their VCS. In addition, using containerization tools such as Docker and Kubernetes, both of which have integrations to various CI tools, can help with implementing continuous integration at scale.
Other Tools Used by CI/CD Teams
On top of the CI/CD-specific tools, there are horizontal tools that are often used in the CI/CD space. These include Infrastructure as a Service (IaaS) tools such as Microsoft Azure, databases such as MySQL and SQL Server, IDEs such as Eclipse, Visual Studio, and Atom, and issue tracking systems like Jira.
When considering what continuous delivery tools to use in your software build process, think about scope and cost. What do you need your tools to do for you, and how much are you willing to pay for that functionality? Once these questions have definitive answers, you can compare different tools to find the right ones for your particular use case.