CI/CD (Continuous Integration/ Continuous Delivery or Continuous Deployment)

The main concepts attributed to CI/CD are continuous integration, continuous delivery, and continuous deployment. A method to frequently deliver apps to customers by introducing automation into the stages of development.

They're practices in software development that allow teams to build projects together quickly, efficiently, and ideally with less errors.

Continuous integration is an automation process for developers. Successful CI means new code changes to an app are regularly built, tested, and merged to a shared repository.

Continuous delivery usually means a developer’s changes to an application are automatically bug tested and uploaded to a repository (like GitHub or a container registry), where they can then be deployed to a live production environment by the operations team.

Continuous deployment (the other possible "CD") can refer to automatically releasing a developer’s changes from the repository to production, where it is usable by customers.

<aside> 📔 Case-by-case, what the terms refer to depends on how much automation has been built into the CI/CD pipeline.

</aside>

Continuous Integration is the idea that as different members of the team work on code on different git branches, the code is merged to a single working branch which is then built and tested with automated workflows.

Continuous Deployment takes CI a step further and takes the automation to the deployment level. Where with the CI process, you automate the testing and the building, Continuous Deployment will automate deploying the project to an environment.

Branching strategy

Nowadays, there are many workflows: Git flow, GitHub flow, GitLab flow, Trunk-based development, etc.