GitHub Actions тормозит на больших монорепо — как победить время сборки?

Рейтинг: 75.3% · 37 голосов
Docker, Kubernetes, Helm, Terraform, Ansible, GitLab CI, GitHub Actions: автоматизация деплоя, инфраструктура как код, мониторинг и observability.
Ответить
Аватара пользователя
gleb_flux33
Сообщения: 2
Зарегистрирован: Вт май 19, 2026 4:42 am

GitHub Actions тормозит на больших монорепо — как победить время сборки?

Сообщение gleb_flux33 »

Монорепо на ~120 сервисов, все на Go и Python. GitHub Actions, самохостинговые раннеры на трёх серверах (32 ядра, 64 ГБ каждый). Проблема — при любом коммите в main запускаются все пайплайны, полный цикл занимает 45-50 минут. На небольших командах это ещё терпимо, но сейчас нас 30 разработчиков и очередь в раннеры постоянная. Что делаете для оптимизации в монорепо-сценарии?
👍2 ❤️1 🔥 😄 🤔
✔ Лучший ответ сформирован автоматически — valera6777
Path-based triggers — это полумера. Правильное решение — affected-change detection. Мы используем `nx affected` (да, даже для Go-проектов через custom executor) или самописный скрипт на bash который делает `git diff --name-only origin/main...HEAD` и определяет какие сервисы затронуты. Потом через `workflow_call` запускаем только нужные. Время упало с 50 до 8 минут на типичный PR.
Перейти к ответу →
Аватара пользователя
dnscache8196
Сообщения: 32
Зарегистрирован: Вс май 10, 2026 10:26 pm

Re: GitHub Actions тормозит на больших монорепо — как победить время сборки?

Сообщение dnscache8196 »

Первое что нужно сделать — path-based triggers. В каждом workflow добавляете `on: push: paths:` с путём к нужному сервису. Да, это нужно поддерживать, но зато не запускается 120 пайплайнов на изменение README. Второй шаг — `actions/cache` для зависимостей: Go modules и pip кеши между ранами. У нас это срезало время с 40 минут до 18 на полном прогоне.
👍1 ❤️ 🔥 😄1 🤔
Аватара пользователя
valera6777
Сообщения: 16
Зарегистрирован: Пн май 11, 2026 11:48 pm

Re: GitHub Actions тормозит на больших монорепо — как победить время сборки?

Сообщение valera6777 »

✔ Лучший ответ — сформирован автоматически
Path-based triggers — это полумера. Правильное решение — affected-change detection. Мы используем `nx affected` (да, даже для Go-проектов через custom executor) или самописный скрипт на bash который делает `git diff --name-only origin/main...HEAD` и определяет какие сервисы затронуты. Потом через `workflow_call` запускаем только нужные. Время упало с 50 до 8 минут на типичный PR.
👍3 ❤️1 🔥2 😄2 🤔1
Аватара пользователя
savva2867
Сообщения: 13
Зарегистрирован: Чт май 14, 2026 10:46 am

Re: GitHub Actions тормозит на больших монорепо — как победить время сборки?

Сообщение savva2867 »

@jun_dev_2026, У нас похожая история. Решили через Turborepo — он умеет кеширование артефактов между пайплайнами через remote cache (можно self-hosted на S3-совместимом хранилище, у нас MinIO). Запуск `turbo run build test --filter=[HEAD^1]` сам определяет что изменилось и не пересобирает то что уже кешировано. На 80 сервисах типичный прогон — 6-7 минут.
👍1 ❤️ 🔥1 😄1 🤔
Аватара пользователя
rodion_pixel50
Сообщения: 5
Зарегистрирован: Ср май 20, 2026 10:10 pm

Re: GitHub Actions тормозит на больших монорепо — как победить время сборки?

Сообщение rodion_pixel50 »

Не забывайте про Docker layer caching. Если у вас образы пересобираются в CI — добавьте `cache-from: type=gha` и `cache-to: type=gha,mode=max` в `docker/build-push-action`. GitHub Actions кеширует слои между ранами. Ещё — переходите на `docker buildx` с multi-platform если нужны ARM-образы, это быстрее двух отдельных сборок.
👍3 ❤️1 🔥2 😄2 🤔
Аватара пользователя
igor_pixel18
Сообщения: 8
Зарегистрирован: Ср май 13, 2026 1:59 pm

Re: GitHub Actions тормозит на больших монорепо — как победить время сборки?

Сообщение igor_pixel18 »

Три раннера по 32 ядра — это хорошо, но проверьте что у вас `runs-on: self-hosted` не ставит всё в очередь последовательно. Нужен лейбл для параллелизма: `runs-on: [self-hosted, linux, x64]` и `max-parallel: 10` в matrix strategy. Ещё поставьте на раннеры `actions-runner-controller` в k8s — он умеет автоскейлинг раннеров под нагрузку, не держите три монолитных сервера.
👍2 ❤️ 🔥3 😄1 🤔
Аватара пользователя
sergey_cache81
Сообщения: 3
Зарегистрирован: Пн май 11, 2026 1:57 pm

Re: GitHub Actions тормозит на больших монорепо — как победить время сборки?

Сообщение sergey_cache81 »

Самое радикальное — Dagger. Переписываете пайплайны на Go/Python SDK, они запускаются локально и в CI идентично, кеш шарится через Dagger Cloud. Мы потратили две недели на миграцию 40 сервисов, зато теперь разработчик гоняет те же шаги локально что и в CI. Время полного прогона в CI — 4 минуты, потому что 90% слоёв уже в кеше.
👍2 ❤️1 🔥 😄 🤔
Ответить
Поделиться темой: ✈ Telegram VK

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость