Most teams have CI. Fewer have CI that can stop a bad release. The difference is not tooling - it is whether anyone is allowed to merge past a red build.
What blocks a merge
- Unit and API tests on the touched service
- A lint and formatting pass, so review is about logic
- A dependency audit for known advisories
- A build of the actual artefact you intend to ship
What runs but does not block
Full end-to-end suites and performance runs are slower and flakier. They run on main and page us on failure, rather than holding up every pull request.
Speed is a correctness feature
A pipeline that takes forty minutes will be worked around. We cache aggressively and parallelise, because a fast gate is a gate people respect.
A red build must mean something
We track flake rate and fix flaky tests as bugs. The moment a failure might be noise, the gate stops working - people start re-running until it is green.