CI/CD

**TO DO: ** What is CI/CD

Continuous Integration

CI refers to integrating multiple changes (from multiple developers) into the main codebase at a regular cadence - often multiple times per day. Not only does this step involve dealing with any conflicts in merging those changes, it is also tasked with running automated tests to ensure that those changes do not break existing and expected functionality. This can be referred to as “regression testing”.

Continuous Delivery or Deployment

The “D” in CI/CD usually means 1 of 2 things, Delivery or Deployment - so what’s the difference? The difference boils down to the organizational appetite to allow code changes to flow automatically through to production.

If you’re comfortable that your automated testing practices (the “CI”) are robust enough, then you may be happy for code to be Deployed to production with out any further human intervention. This type of organization is usually smaller and more “agile”, e.g. a start-up.

If you are a little more conservative and risk averse, then you may adopt the Delivery approach, which means that code is ready to deploy but requires some manual intervention to actually deploy to production. You’d usually find this approach in larger enterprises with a more stringent approach to risk.