Sadly, many developers simply set up a CI server and falsely assume they are “doing CI” when in reality they miss out on all the benefits. Common failure modes include: running CI against a shared mainline but with infrequent commits, so integration isn’t really continuous; running a build with poor test coverage; allowing the build to stay red for long periods; or running CI against feature branches which results in continuous isolation. The ensuing “CI theatre” might make people feel good, but would fail any credible CI certification test.