GitHub Actions тормозит на больших монорепо — как победить время сборки?
Рейтинг: 75.3% · 37 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
- gleb_flux33
- Сообщения: 2
- Зарегистрирован: Вт май 19, 2026 4:42 am
GitHub Actions тормозит на больших монорепо — как победить время сборки?
Монорепо на ~120 сервисов, все на Go и Python. GitHub Actions, самохостинговые раннеры на трёх серверах (32 ядра, 64 ГБ каждый). Проблема — при любом коммите в main запускаются все пайплайны, полный цикл занимает 45-50 минут. На небольших командах это ещё терпимо, но сейчас нас 30 разработчиков и очередь в раннеры постоянная. Что делаете для оптимизации в монорепо-сценарии?
✔ Лучший ответ сформирован автоматически — 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 тормозит на больших монорепо — как победить время сборки?
Первое что нужно сделать — path-based triggers. В каждом workflow добавляете `on: push: paths:` с путём к нужному сервису. Да, это нужно поддерживать, но зато не запускается 120 пайплайнов на изменение README. Второй шаг — `actions/cache` для зависимостей: Go modules и pip кеши между ранами. У нас это срезало время с 40 минут до 18 на полном прогоне.
- valera6777
- Сообщения: 16
- Зарегистрирован: Пн май 11, 2026 11:48 pm
Re: GitHub Actions тормозит на больших монорепо — как победить время сборки?
✔ Лучший ответ — сформирован автоматически
Path-based triggers — это полумера. Правильное решение — affected-change detection. Мы используем `nx affected` (да, даже для Go-проектов через custom executor) или самописный скрипт на bash который делает `git diff --name-only origin/main...HEAD` и определяет какие сервисы затронуты. Потом через `workflow_call` запускаем только нужные. Время упало с 50 до 8 минут на типичный PR.
Re: GitHub Actions тормозит на больших монорепо — как победить время сборки?
@jun_dev_2026, У нас похожая история. Решили через Turborepo — он умеет кеширование артефактов между пайплайнами через remote cache (можно self-hosted на S3-совместимом хранилище, у нас MinIO). Запуск `turbo run build test --filter=[HEAD^1]` сам определяет что изменилось и не пересобирает то что уже кешировано. На 80 сервисах типичный прогон — 6-7 минут.
- rodion_pixel50
- Сообщения: 5
- Зарегистрирован: Ср май 20, 2026 10:10 pm
Re: GitHub Actions тормозит на больших монорепо — как победить время сборки?
Не забывайте про 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-образы, это быстрее двух отдельных сборок.
- igor_pixel18
- Сообщения: 8
- Зарегистрирован: Ср май 13, 2026 1:59 pm
Re: GitHub Actions тормозит на больших монорепо — как победить время сборки?
Три раннера по 32 ядра — это хорошо, но проверьте что у вас `runs-on: self-hosted` не ставит всё в очередь последовательно. Нужен лейбл для параллелизма: `runs-on: [self-hosted, linux, x64]` и `max-parallel: 10` в matrix strategy. Ещё поставьте на раннеры `actions-runner-controller` в k8s — он умеет автоскейлинг раннеров под нагрузку, не держите три монолитных сервера.
- sergey_cache81
- Сообщения: 3
- Зарегистрирован: Пн май 11, 2026 1:57 pm
Re: GitHub Actions тормозит на больших монорепо — как победить время сборки?
Самое радикальное — Dagger. Переписываете пайплайны на Go/Python SDK, они запускаются локально и в CI идентично, кеш шарится через Dagger Cloud. Мы потратили две недели на миграцию 40 сервисов, зато теперь разработчик гоняет те же шаги локально что и в CI. Время полного прогона в CI — 4 минуты, потому что 90% слоёв уже в кеше.
Поделиться темой:
✈ Telegram
VK
- Похожие темы
-
- GitHub Actions съедает бюджет, селф-хостед раннеры — спасение или геморрой?
7 ответов · 700 просмотров
-
- Запрос с JOIN тормозит на 5 секунд, EXPLAIN внутри — помогите разобраться
7 ответов · 630 просмотров
-
- GKE на Spot-нодах: поды убивает раньше чем они успевают завершиться, теряем сообщения. Как победить?
7 ответов · 531 просмотров
-
-
-
- Cursor Cloud Agents vs Claude Code — что реально быстрее на большом монорепо?
6 ответов · 11 просмотров
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость