В нашей очень большой команде мы также делаем gated в основной ветке и CI в ветках dev / feature (многие из них).
Gated предлагает больше защиты для ветви, но с очень большой командой и большой базой кода, он может создать резервную копию очереди, если вся команда разработчиков вносит изменения в эту ветку.
CI обеспечивает защиту с немного большим доверием к разработчикам, также зная, что любые проблемы будут быстро обнаружены. Это немного более оптимистично и позволяет команде двигаться намного быстрее, что подходит для ветки разработчика.
В обоих случаях разработчики запускают модульные тесты и тестируют код, который они изменяют. CI (влияет на команду) и Gated (занимает время в очереди) не должны заменять тестирование - должно быть более правдоподобное объяснение, более сложное, чем я его не пробовал.
Вся команда находится в ветках feature / dev, использующих CI для большей части цикла, и в более высоких ветвях с большим количеством людей во время стабилизации в конце игры - оба эти последних условия поддерживают случай gated.
В большой команде нам также необходимо получать сборки CI и выполнять параллельные тесты, чтобы быстрее находить проблемы, когда время сборки не тривиально, а полные комплекты тестов также не тривиальны. В этом сценарии люди регистрируются, CI выбирает последнюю партию регистрации, запускает сборку, а когда сборка прекращается, другая машина выбирает и запускает наборы тестов.