Self-hosted runners

Тема дорожной карты · GitHub Actions

Self-hosted раннеры — это агенты runner для GitHub Actions, которые вы устанавливаете на собственном железе, виртуальной машине или контейнере, чтобы jobs workflow выполнялись внутри вашей сети с доступом к внутренним сервисам, кастомным инструментальным цепочкам, GPU или ограниченным лицензиям, которые GitHub-hosted runners не могут предоставить. Self-hosted runner регистрируется для репозитория, организации или предприятия, получает метки (self-hosted, linux, gpu) и задаётся в workflow через runs-on: [self-hosted, gpu]. Эксплуатация self-hosted runners перекладывает на вашу команду ответственность за патчинг ОС, ротацию секретов, эфемерную изоляцию и управление ёмкостью. Поэтому стандартный production-паттерн — короткоживущие runner, порождаемые на каждый job такими инструментами, как Actions Runner Controller (ARC) на Kubernetes. Self-hosted runners — правильный выбор, когда требуют этого задержка, соответствие нормативным требованиям или специализированное железо; в остальных случаях GitHub-hosted runners проще и дешевле для большинства CI/CD-workflow.

Как это работает

Self-hosted runners runners работают на ваших машинах (VM, bare metal, k8s). Установите actions-runner пакет; зарегистрируйте через токен. Тегайте runners labels (self-hosted, linux, gpu) — workflows матчатся. Авто-скейл пулов runner через actions-runner-controller (k8s), runs-on.com или Philips Labs/terraform-aws-github-runner. Self-hosted runners получают полный доступ к репо — никогда не расшаривайте между недоверенными проектами.

Когда применять

Self-hosted — когда: сборки требуют GPU/special hardware, доступа к приватным ресурсам по сети, дольше 6 часов, большой compute дешевле cloud-квот, или compliance запрещает публичные облака. Для РФ self-hosted на Yandex Cloud / Selectel / локальной инфре — практичный выбор; GitHub-hosted могут быть медленны или недоступны. Авто-скейл или гибернация idle-runners.

Типичные ошибки

Ловушки Self-hosted runners: self-hosted runner расшарен между публичными репо и приватным кодом (PR из публичного форка pwn-ит runner); runners никогда не патчатся (уязвимая поверхность); runners остаются online + принимают jobs откуда угодно (дефолт — ограничьте через runner_group); нет cleanup между jobs (state утекает).

Связанные понятия

Полезные ресурсы