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 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 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.
Continuous Delivery and Deployment Tools
One of the most popular tools for both continuous delivery and integration is Jenkins, an open source server-based application (meaning it requires a web server to run) 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. A useful tool for continuous deployment in particular is the Java Secure Channel, which provides deployment automation.
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 (previously Windows 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.