(I assume you're a developer)
The goal is for the Business to have a strong, reliable feedback loop. They dream up a feature, and after it's deployed they get feedback from the users.
CI = Continuous Integration = merge your and your team's changes, then run tests to get feedback. Example: your code works, but it breaks the assumptions in older code. By investing in test automation you get a fast, reliable feedback loop, and users don't see nasty bugs in production.
CD = Continuous Deployment = publish changes so users can see
For example, if your pipeline simply "regenerates HTML and deploys to Vercel", it's a CD process.
CICD has a lot of benefits:
- consistent deploys
- deploys "in line" with normal Dev workflow, nothing special needed
- reliable testing, vs "works for me" testing
You can do fancier things like "deploy this change, but if it breaks then automatically roll back the change and alert the team".
CICD has costs of course:
- need to spend (limited, expensive) Developer time to manage it
- often the business doesn't want to invest, but they whine if deploys are too slow or flaky
- if you install CICD plugins (e.g. GitHub Actions) it's a great attack vector for malware. I don't think this is common, but it's a potential risk.
Top comments (0)