В моей компании обычно не делают промежуточных сборок, чтобы проверить, как каждая ветка возможностей / исправлений объединяется в dev. Существует только ежедневная сборка, которая всегда выявляет множество неудачных тестов и ошибок сборки. Мне сказали, что неразумно делать сборку для каждого слияния более 1000 разработчиков.
Поэтому я искал, как организована CI в компаниях, у которых столько или больше разработчиков (Microsoft, Facebook), и ничего не нашел. Может быть, инсайдеры могут сказать мне тогда?
Ответы:
Это, в основном, проблема масштабирования. Вы разделяете свою работу на модули, которые могут быть разными проектами и / или разными функциями вашего продукта.
У вас будут команды, которые охватывают наборы этих модулей. Каждая из этих команд будет иметь настроенные циклы CI для своих областей, и только после того, как пройдут их соответствующие циклы, код будет передан в главные репозитории, где будет выполнен основной цикл CI.
Основной цикл CI, скорее всего, будет отличаться от циклов CI командного уровня в следующих аспектах:
С этим подходом вы должны сделать автоматическую передачу из локальных репо в центральное репо после прохождения цикла локального CI, чтобы ваши разработчики не тратили огромное количество времени на передачу кода в центральные репозитории.
источник
В дополнение к тому, что сказал @Vladimir_Stokic, в некоторых командах (у меня ~ 150 разработчиков) мы собираем чаще, чем каждые 24 часа. Всякий раз, когда происходит фиксация, мы запускаем 5-минутный таймер. После истечения 5 минут все коммиты, которые произошли в течение 5-минутного интервала, объединяются и строятся. Сборка обычно является инкрементной сборкой. У нас есть отдельный компоновщик, который запускает модульные тесты для каждой происходящей сборки. После того, как сборка завершена, если во время сборки было больше коммитов (что занимает от 1 до 45 минут, в зависимости от того, что изменилось), создаются все ожидающие изменения и так далее. У нас также есть ночная (чистая, полная) сборка, но сборки, которые происходят при каждой фиксации (грубо), очень быстро сообщают нам, провалились ли какие-либо тесты.
источник