I’m trying to understand how different teams structure their delivery process.
In many setups, CI handles everything (builds, deployments, approvals, sometimes even rollback logic).
It works, but over time it feels like responsibilities start to blur.
CI is great at validating changes. But release decisions (what goes where, who approves, and how rollback works) seem like a different concern.
So I’m curious:
Do you separate CI and CD?
Or keep everything inside the same system?
Would be great to hear your thoughts on this and how your setup works.
Good question—this really depends on team size, product complexity, and how much control you want over releases.
In most modern setups, CI and CD are logically separate but often live in the same pipeline/tooling:
Separating them conceptually has a few benefits:
But fully separating them into different systems isn’t always necessary. Many teams use a single pipeline with distinct stages (e.g., build → test → stage → approve → deploy).
Where separation becomes more important:
So in practice, it’s less about strict separation and more about clear stage boundaries and control points within your pipeline.
Curious how others here are handling this—especially with GitOps and progressive delivery patterns becoming more common.