Continuous Integration Automation in 2021 – Hindsight is now really 2020
Happy 2021 and it’s time for our first blog of the year. What better way to jump into the new year than to talk about Automation. And not just any Automation but Continuous Integration Automation. Okay, did I build that up too much and I did not even say anything about AI. So, let’s focus, it is the new year and focus is the goal. I already lost dad of the year after only 3 days. Focus. Continuous Automation has been around for a while and organizations have been using Selenium and other open-source tools to create pipelines. With this blog, I’ll share how we can leverage Automation as we enter the new year and some of the pitfalls we see.
A common goal is to deliver better, faster “bug-free” code. The Nirvana of what most automation implementations hope to achieve. Speaking of which, the local radio station here in Minneapolis had 90s New Year’s Eve. It was awesome for the couple errands I had to run and ironically might have been the only time I actually listened to the radio in 2020. My kids had no idea why the music was so awesome or what the word grunge meant. I am failing them. Agh Focus.
Back to automation. So where was I. Oh yes, pipelines. Let’s talk about what a Pipeline is for those folks that are not familiar.
What is a CI/CD pipeline?
A CI/CD pipeline automates your software delivery process. The pipeline builds code, runs tests (CI), and safely deploys a new version of the application (CD). That is the pretty standard definition that most Engineers would agree with. Okay, maybe not every engineer and at least 5 would strongly disagree. I don’t know why, but they just do. You know who you are.
Automated pipelines also remove manual errors, provide standardized feedback loops to developers, and enable fast product iterations. All this automation is pretty amazing, like the perfect mixtape. Nirvana, Stone Temple Pilots, and anything off the Ten album.
What do CI and CD mean and what is the difference?
CI, short for Continuous Integration, is a software development practice in which all developers merge code changes in a central repository multiple times a day. CD stands for Continuous Delivery, which on top of Continuous Integration adds the practice of automating the entire software release process. This has been pretty standard with most organizations, but automating all those processes has been newer within the last 5-8 years. We used to have a Release Manager, remember them, who managed all those processes. This has been done predominantly now through technology. Jenkins has been a common open source technology utilized in conjunction with automation tools to fit everything together. This usually looks something like this.
The idea here is that each change in code triggers an automated build-and-test sequence for the given project, providing feedback to the developer(s) who made the change. This is by far the most powerful impact on most development organizations.
CI/CD pipeline main Elements
A pipeline can start very simple. But all will have the four basic parts outlined below.
A simple CI pipeline will have an automated way of merging code, integration with a Build Tool usually also automated, running automation tests to validate and creating a report. This can be as simple as one piece of code, one build, one test and one report. Or as complex as multiple tests and mobile reporting.
The elements here are pretty straight forward, but as with everything in my life, it gets complicated quick. That is where having the right personal in place to help you on your automation is critical.
Tune in next week when we take a deeper dive into the technologies that companies are using along with a little AI. And of course more 90’s music and an occasional Simpson’s reference. Welcome to the New Year!
Michael Faulise
Michael Faulise is the Founder and Managing Partner at tap|QA, a global company that specializes in software testing services and solutions for businesses. Michael focuses on sales and delivery where he consults with clients in the areas of software development, automation, quality assurance and testing, technology and process training, and process improvement. In 25+ years of industry experience, he has seen software development evolve along multiple paths of various methodologies but has found quality has remained essentially constant.
Have a QA question?
Our team would love to help!