The Processes to Nail in Your Move to CI/CD
When you are looking to move to Continuous Integration / Continuous Delivery (CI/CD), there are a number of processes that you have to review and decide upon. In this post, we take you through those major processes.
1. Branching and merging
One of the major processes to organize is your branching and merging. Branching is where developers can work on parallel parts of the code – branched out from one central code base. The benefit of branching is that it allows simultaneous work on different aspects of the software build without destabilizing the central code base. And merging, obviously, is where the branch is merged back into the central code base.
It is a situation that many developers are already familiar with, through various version control systems. Nonetheless there are very different strategies about what you branch, depending on the unique requirements of your build. Some developers will branch for release, some by maintenance, feature or team.
Despite the religious fervor you may encounter for one strategy versus another, there is not a right branching and merging strategy, only the right way for your build. This requires a review of your current branching and merging strategy and a decision on what needs to change based on your unique goals and situation.
2. Build automation
Build automation is where you automate the compiling of a software build. A Continuous Integration server is, at its core, a build automation server, whose job is to compile and link source code on a triggered or timed basis. The Continuous Integration server you choose will become the backbone of your CI/CD environment.
When looking at the build automation process, it is helpful to get to grips with the capabilities of the various options available on the market. The open-source Jenkins is now resolutely dominant in CI/CD deployments and this is typically a good place to start. Or at the very least, to use as a benchmark when comparing other solutions. As an open-source system, you may still have to build some utilities to make the build automation perfectly tailored for your situation.
3. Test automation
Test Automation is essential for CI/CD to work as intended. CI/CD will quickly fail the goal of speedy delivery without automated testing. Our overall recommendation is to automate as much as you can. This means you need to review the various tests that you need to conduct and decide what can safely be automated within your environment.
There may be new skillsets required to set up a Test Automation environment. Nonetheless, it is a strategic requirement which will increase the speed of delivery and reduce errors. As a minimum, you should automate your code review, unit testing, integration testing and system testing.
4. Deployment automation
There is still some confusion as to the difference between Continuous Delivery and Continuous Deployment. Put simply, Continuous Delivery means continuously pushing out release-ready code while Continuous Deployment means deploying that software to users, continuously.
Whichever “CD” you are looking at, it will seem like a big leap to those not used to it. And either will require a watertight test automation infrastructure in order for your organization to have confidence in your ability to deploy the software to end-users.
Our recommendation is that it is best to go into this process definition with the overall aim of a zero-touch Continuous Deployment in mind. While the leading Continuous Integration systems typically now consider themselves Continuous Delivery systems too, you can go further than the out-of-the-box parameters. True agility requires building an infrastructure where writing good code leads to the user using it and appreciating it as quickly as possible.
Read more about our CI/CD Quickstart program here to learn how you can get set up with CI/CD in as little as 8 weeks.