CI/CD (Continuous Integration and Continuous Deployment) is a set of development practices that automate the process of building, testing, and deploying software changes. This post explains the concepts behind CI/CD, how automated pipelines work, popular tools like GitHub Actions and Jenkins, and how CI/CD reduces deployment risk and accelerates software delivery.
Continuous integration (CI)
What is continuous integration or CI? Continuous integration is a software developer best practice. Imagine we're working on a software project with a team of developers that's all working towards a common goals with CI, we would continuously take any new code that we've written on our machines and we would integrate that code into the main code that's been shared with everyone to make sure that our changes work. And that they work not just on our machines, but also for everyone else on the team, everyone who is working on that code.
If we're using GIT to share our code with everyone else, maybe on a service like GitHub, what this would mean is merging our code continuously into the main branch and making sure that it sill works. Because continuous integration is a process, we can visualise this process.
One of the main ideas behind continuous integration is frequently committing code to a shared repository.
Continuous Delivery (CD)
What is continuous delivery? Continuous Delivery is a process that builds on continuous integration. How does it improve things we can think of continuous integration as the first step and continuous delivery takes things a step further. It gives you even more confidence in your code. Specifically, continuous delivery or CD, gives you confidence that your code will work in production. That your code is a state that could be released to your users at any point in time.
Let's say we have continuous integration set up for our project, our team of developers is checking in code and CI server is building that code. If there's any build steps required, it's testing that code and running any additional checks. Continuous delivery adds an extra guarantee into our process that says that each time we add code to the main branch, it's ready to be delivered.
Continuous delivery says that whatever code our developers are sharing that's been merged into that main repository is ready to be deployed to production.
Frequently Asked Questions
What is CI/CD?
CI/CD stands for Continuous Integration and Continuous Deployment — CI automatically builds and tests code changes whenever they are pushed to a repository, while CD automatically deploys validated changes to staging or production environments.
What is the difference between Continuous Delivery and Continuous Deployment?
Continuous Delivery means code is always in a deployable state and can be released at any time with a manual approval step, while Continuous Deployment goes further by automatically deploying every change that passes all automated tests directly to production.

