This document discusses different types of continuous integration (CI) pipelines. It begins by describing staging CI, where jobs are triggered on new commits, and issues can arise if the build breaks. It then covers gating CI, used by OpenStack, where code is reviewed and tested before being merged without broken builds. Finally, it discusses doing CI yourself using open source tools like Gerrit, Zuul and Jenkins, alone or via the pre-built Software Factory project. The conclusion is that gating CI prevents broken masters and these techniques can be reused for one's own projects.