В монорепозитории определение затронутых проектов при изменении кода — критическая задача для эффективности CI. Без точного определения приходится пересобирать и тестировать всё, что многократно увеличивает время пайплайна. Качественный affected detection опирается на граф зависимостей и позволяет запускать только релевантные сборки и тесты.
Точность вычисления измененных модулей. Без этого каждое изменение запускает полную пересборку репозитория.
МЕТРИКА №1 СПЕЦИФИЧНАЯ ДЛЯ МОНОРЕПЫ. Nx, Bazel и Pants анализируют графы зависимостей. Nx заявляет экономию 90-95% времени CI. Если она не работает, все остальные метрики монорепы деградируют.
Без определения затронутых проектов каждое изменение вызывает полную сборку.
Точное определение затронутых проектов означает, что собираются и тестируются только они. Nx сообщает об экономии времени CI на 90-95%. Без этого — полная сборка репозитория на каждое изменение.
Запускаются только тесты затронутых проектов. Google: тесты запускаются только если граф транзитивных зависимостей включает измененные файлы.
Разработчики не ждут несвязанных сборок. Быстрая обратная связь по их реальным изменениям.
Партиционирование очереди: PR конкурируют только с PR, затрагивающими те же проекты, а не со всеми PR.
Меньше тестов запускается = меньше возможностей для нестабильных падений на PR.
Точное определение → сборка тех же таргетов → выше вероятность попаданий в кеш.
Большие репозитории имеют более сложные графы зависимостей, что усложняет точное определение затронутых проектов.
Запутанные межпроектные зависимости усложняют определение затронутых проектов. Скрытые зависимости снижают селективность.