В моем случае (собственная система CB, спроектированная / построенная / поддерживаемая), коммиты в VCS в дереве, на которое ориентирована данная конфигурация CB, автоматически ставят в очередь запрос CB (несколько запросов, поступающих во время работы CB, сворачиваются в один, который будет запущен, как только будет завершен текущий процесс CB).
Каждый экземпляр CB отвечает на запрос CB, выполняя шаги по сборке и тестированию, которые он настроил (обрабатывая их параллельно «облаку» распределенных серверов, совместно используемых всеми экземплярами CB), регистрируя результаты сборки и тестирования, и иногда (не чаще, чем настроенная частота) запускает "тяжелые тесты" (которые могут выполняться ОЧЕНЬ долго и НЕ будут блокировать входящие запросы CB - тяжелые тесты полностью отменяются, хотя журналы очень четко дают понять против в какую сборку они бежали).
"sync to head" (что "head" будет "trunk" в других VCS ;-), поскольку зависимости, которые не являются частью дерева, отслеживаемого CB, могут происходить каждый раз (они будут легкими, не -производственные или экспериментальные сборки), или только по очень явным запросам интеграции (это другая крайность, для "веток релиза" для сборок / проектов, критичных к производству), или с промежуточным допуском.
Я думаю, что это не вершина практики разработки релизов, но в своем наборе вариантов она хорошо работает для нас, для действительно широкого спектра проектов с очень различной критичностью, степенью зависимости и т. Д.).