их было немного, мы просто в каждом пайплайне запускали параллельно билды каждого и рассчитывали на кеш стадий. Но сейчас их стало в несколько раз больше и это снова стало проблемой: даже с кешом стадий сборка множества сервисов заметно замедляет работу.
Мы пробовали использовать гитлабовский only: changes: для каждого сервиса , но с ним есть известные проблемы (например, когода джоба упала, она не перезапустится при следующем коммите если файлы в changes не поменялись).
Сталкивались ли с подобным и как решали?
PS Только не предлагайте раздербанить монорепо 🙂
А почему нельзя сделать несколько билдов, но с одинаковыми слоями? Очевидно слой пакетов будет у всех одинаковый - выносим отдельной джобой, слои сборки/настройки у каждого свои
Возможно мало контекста, но пока только пара идей в голове, не делать джобы под сервисы, в директорий которых не было изменений комитов через стандартные средства git
Разлелите конфиги werf между сервисами - стартуйте для каждого сервиса свой werf.yml. Можно параллельным запуском в 28 гитлабовых задач :) Тогда werf в каждом выделенном случае будет гораздо меньше времени тратить на работу с хранилищем стадий и собирать меньшее количество образов.
Обсуждают сегодня