Originally published by New Context.
We’ve been discussing continuous integration and continuous delivery (CI/CD) for a couple of articles now. We’ve talked about testing throughout the CI/CD pipeline and some best practices. This should provide you with a solid foundation to move forward with your CI/CD implementation. In this concluding article, we are going to talk a bit about the philosophy behind CI/CD, provide you with some encouragement on this long and winding road, and help walk you through your migration.
Continuous integration and continuous delivery (CI/CD) is a methodology of automatically building and deploying code in order to provide you with greater speed and reliability. It is done in two parts: continuous integration (CI) and continuous delivery (CD). Continuous integration is the practice of continually integrating code into the main branch of your repository, automatically testing it. Continuous delivery is then getting your code to a deliverable state so that it can be deployed at the push of a button. Or, in the case of continuous deployment, automatically deploying your code if all tests pass.
So why should you care? This CI/CD methodology allows your developers to quickly get tested and proven code into production by removing barriers through automating testing, approvals if tests pass, security scanning, notifications, and more. It shouldn’t take longer to merge changes than it takes to make the changes. The fully automated CI/CD approach addresses many of the manual hurdles.
But CI/CD isn’t just a methodology. It’s a mentality. It’s approaching problems with automation in mind, not allowing manual deployments, ensuring that tests run, dash; and pass! It is speed and efficiency. It is knowing your code is going to work, being able to quickly fix it when things break, and sleeping well at night. In this brief article, we will wax philosophical about CI/CD and walk you through your migration to the CI/CD mentality.
CI/CD is not a destination; it’s a goal. Even when you have a CI/CD methodology and workflow established that everyone is following, you’ll find some other improvement or change that needs to happen to your CI/CD framework. This is okay. This is part of the process, and understanding that this is a process and not a destination will help you keep your sanity.
As you go through the migration to a CI/CD mindset, it’s important to keep in mind that CI without CD is incomplete. The end goal is speed and reliability which we achieve through automation. CI only solves the first half of that problem. A robust CI process is infinitely better than nothing, but even with your code automatically integrated, it still hasn’t been deployed anywhere. Remember, CI/CD is not a destination. You’ll always be working toward a better solution. Don’t plateau. Don’t get discouraged.
If this space is new to you or you’re just starting to think about your CI/CD workflow, it’s important to understand that you’re not going to magically be there. It’s going to take planning and various stages of work. So figure out what you want to accomplish first and prioritize that. There are absolutely some best practices that you’ll want to follow, but best practices are just theory; you are going to have edge cases and special considerations that you’ll need to determine how to best implement in your environment. Start small, prioritize what needs to be done, and work toward a fully-implemented CI/CD pipeline that eventually includes functional testing, integration testing, performance and security monitoring, and automated deployments.
If you’ve been using a CI/CD workflow for years, there are still plenty of questions to ask yourself, including:
These are just some of the questions you can consider to help improve your existing workflow. This is also where value-stream mapping becomes invaluable.
Your journey into CI/CD is never over. But once you lay the foundation for a proper workflow, the forthcoming pieces will fall more naturally into place. The biggest hurdle is mindset. Take your time, plan it out, figure out what to prioritize, make it happen, and move on to the next bit. You might find yourself asking questions about CI/CD. How do I implement it? How can we improve our existing pipeline? While reading this article, maybe you’ve caught yourself saying, “My environment is different; can I do it there?” Don’t worry. This is something you can do. And there are always experts out there to answer any questions you have, to provide guidance, to help you migrate to a CI/CD mentality. If you have any questions or would like to know more about your next steps contact us below.