Это, в основном, проблема масштабирования. Вы разделяете свою работу на модули, которые могут быть разными проектами и / или разными функциями вашего продукта.
У вас будут команды, которые охватывают наборы этих модулей. Каждая из этих команд будет иметь настроенные циклы CI для своих областей, и только после того, как пройдут их соответствующие циклы, код будет передан в главные репозитории, где будет выполнен основной цикл CI.
Основной цикл CI, скорее всего, будет отличаться от циклов CI командного уровня в следующих аспектах:
- Циклы CI командного уровня не должны создавать код всей компании, только те модули, за которые они отвечают, и зависимые модули. Если есть два модуля, которые полностью независимы и находятся в разных командах, они не будут частью цикла CI другой команды.
- Циклы CI командного уровня могут иметь гораздо более подробные автоматические тесты, чем основной цикл CI. Цикл Master CI будет иметь тесты проверки работоспособности и регрессионные тесты, которые, в зависимости от размера основного решения, будут выполняться ежедневно или даже еженедельно, поскольку иногда выполнение этих тестов может занять более 24 часов.
С этим подходом вы должны сделать автоматическую передачу из локальных репо в центральное репо после прохождения цикла локального CI, чтобы ваши разработчики не тратили огромное количество времени на передачу кода в центральные репозитории.