
GitHub self-hosted runners в Docker: как поднять несколько изолированных раннеров на одном хосте. Часть 1
TourmalineCore 29 минут назад GitHub self-hosted runners в Docker: как поднять несколько изолированных раннеров на одном хосте. Часть 1 Простой 16 мин 1.1K DevOps * GitHub * Туториал Если у вас приватные репозитории на...
Anthropic — What company has the best second artificial intelligence model at the end of June?
Вот важная новость с фронта ИИ: TourmalineCore 29 минут назад GitHub self-hosted runners в Docker: как поднять несколько изолированных раннеров на одном хосте. Часть 1 Простой 16 мин 1. 1K DevOps * GitHub * Туториал Если у вас приватные репозитории на GitHub и команда, которая регулярно упирается в лимит времени GitHub Actions, эта статья сэкономит вам пару недель экспериментов.
Расскажем о том, что такое раннеры, как разворачивать self-hosted раннеры Bare Metal и в контейнере, как настраивать их репликацию с помощью Docker Compose, а также с какими трудностями мы столкнулись, пока искали решение наших проблем, и при чем тут Docker-in-Docker. Постарались рассказать подробно, чтобы было понятно даже самым маленьким. Если интересно сразу посмотреть на результат, то весь исходный код и инструкцию по запуску можете найти тут.
Технические детали
Навигация по статьеПредыстория и описание проблемыБаза: кто такие раннеры и куда они бегут Про мультиплатформенностьНаш сетапРазворачиваем self-hosted раннер Bare MetalЭволюционируем из Bare Metal в контейнер Проверяем работу Bare Metal раннераЗапускаем раннеры в Docker`е Переменные окруженияСобираем образСобираем конфиг для Docker ComposeСкрипт для запуска раннераНовые проблемыСобираем DinD раннер Собираем образСкрипт для запуска раннераКонфиг для Docker ComposeИтогиПредыстория и описание проблемыРаньше мы использовали GitHub для open source проектов, а для приватной разработки GitLab. Но однажды не смогли регистрировать новые GitLab-аккаунты с российских номеров, из-за чего чаша весов склонилась в сторону GitHub и для приватной разработки тоже. Над одним из приватных проектов на GitHub работала команда из 3 человек.
Каждый день команда активно коммитила, и после каждого пуша в ветку запускались пайплайны. Их суммарное время выполнения было около 50 минут. GitHub выделяет 2000 минут для организации каждый месяц на запуск пайплайнов на их раннерах для приватных репозиториев.
Эти минуты команда израсходовала за первую рабочую неделю месяца. После того, как закончились выделенные минуты, нужно ждать следующего месяца, чтобы снова пользоваться GitHub-раннерами. Из-за того, что минуты закончились, у нас остановились процессы доставки фич в продакшен для всех команд GitHub-организации (у них общий лимит на все репозитории организации), поэтому это ограничение стало серьёзной проблемой.
Отраслевые последствия
Во времена, когда мы использовали GitLab для приватной разработки, мы пользовались self-managed GitLab-раннерами, которые позволяют запускать все пайплайны на наших серверах в офисе. У GitHub есть аналогичный инструмент, который называется GitHub self-hosted runners, и он помог решить все наши проблемы. Помимо нашей проблемы с лимитами минут, есть ещё такие примеры проблем, с которыми вам могут помочь self-hosted GitHub-раннеры:У вас есть устройство, которое нужно использовать в пайплайнах.
Например, видеокарта, которая подключена к серверу в вашем офисе, а не в дата-центре GitHub.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





