1. Continuous Integration: Continuous Integration (CI) is the process of automating the build and testing of code every time someone commits changes to version control. Many think this is the most critical component to making an effectively agile development team.
CI puts a great emphasis on testing automation to check that the application is not broken whenever new commits are integrated into the main branch. Developers can share their code and unit tests by merging their changes into a shared version control repository after every small task completion. Committing code triggers an automated build system to grab the latest code from the shared repository and to build, test and validate the full master branch. Simply, it ensures bugs are caught earlier in the development cycle, which makes them less expensive to fix - and maintains a consistent quality.
2. Continuous Delivery: Continuous Delivery (CD) is the practice is the practice of streamlining and automating all the processes leading up to deployment. There are a number of steps in CD, such as validating the quality of the build in the previous environment. When done manually these steps can take significant effort and time. However, using cloud technologies and proper orchestration, they can be automated.
Teams should ensure they have a monitoring dashboard for your production environment in place in order to eliminate performance bottlenecks and respond fast to issues. This will complete an efficient CD process.
3. Continuous Testing: Continuous Testing (CT), which can also be referred to as Continuous Quality, is the practice of embedding and automating test activities into every “commit”. CT helps developers use their time more efficiently when trying to fix a bug for code that was written years ago. To fix the bug, developers should first remind themselves of which code it was, undo any code that was written on top of the original code, and then re-test the new code; not a short process. Testing that takes place every commit, every few hours, nightly and weekly, not only increases confidence in the application quality, it also drives team efficiency.
Working together and how to do it well
These three processes are often viewed as distinctly separate identities, fighting for the top spot in the DevOps pipeline. However, CT, CI and CD are better together.
CT, CI and CD are important to the success of one another throughout the delivery cycle, and it’s only by incorporating the CI/CD/CT trifecta that teams will be able to achieve the velocity and quality needed for success in today’s rapidly transforming industry.
But with distinct personalities and distinct jobs to do, how can DevOps teams bring these jobs together? If avoiding the drama of a love triangle is a priority, what characteristics are necessary to keep business running smoothly?
The first, is perhaps the most obvious - communication. Communication is vital, and this is something that CI enables. It allows teams to be Agile by ensuring they are all on the same page, so if they leave a project or move on to a different step in the process, they can easily integrate once they return without having to start over from the beginning.
The second is trust – CD alleviates any unknowns by automating and streamlining all the processes leading up to deployment, such as validating the quality of the build in the previous environment and promoting to staging. By eliminating the element of doubt, teams can trust both the process and the product - assured that continuous quality is being prioritized.
And finally, honesty. If CT is leveraged when developing apps in different environments and with different criteria, it will prevent larger issues from happening once the app is in the sprint or live, keeping developers honest about the status of their code.