GitHub-hosted runners

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

GitHub-hosted runners — полностью управляемые, эфемерные виртуальные машины, которые GitHub предоставляет, настраивает и уничтожает для каждого job в GitHub Actions. Это устраняет необходимость командам обслуживать инфраструктуру CI/CD runner. Каждый GitHub-hosted runner стартует из свежего преднастроенного образа — ubuntu-latest, windows-latest или macos-latest — с обширным набором инструментов: Git, Docker, Node.js, Python, Java и десятки других сред выполнения. Благодаря этому большинство пайплайнов непрерывной интеграции работает без каких-либо установочных шагов. GitHub-hosted runners задаются в workflow через runs-on: ubuntu-latest (или конкретную версию вроде ubuntu-22.04) и выделяются из глобального пула runner GitHub, причём jobs ставятся в очередь и отправляются за секунды от события-триггера. Гарантия изоляции GitHub-hosted runners — ключевое свойство безопасности: поскольку каждый job получает новую ВМ, нет риска утечки состояния между запусками workflow или между разными репозиториями, использующими один пул runner. Для нагрузок, требующих большего числа CPU, памяти или специализированного железа, GitHub предлагает более мощные GitHub-hosted runners как платную опцию, а команды, нуждающиеся в on-premise-выполнении или кастомных инструментальных цепочках, могут дополнительно использовать self-hosted runners.

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

GitHub-hosted runners: GitHub-hosted runners (ubuntu-latest, windows-latest, macos-latest — свежая VM на job, предустановлены распространённые тулы), GitHub-hosted larger runners (больше CPU/RAM, платно), self-hosted runners (ваши машины, бесплатно, но управляете сами). ARM-runners на некоторых планах. Логи job стримятся живо; артефакты (actions/upload-artifact, download-artifact) передают файлы между jobs.

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

ubuntu-latest — почти для всего: быстрейший пул, большинство actions на нём тестируется. Larger runners — для тяжёлых сборок (долгая компиляция, большая test suite). Self-hosted — для: сборок с GPU, сборок с доступом к приватной инфре (БД, internal registries), сборок, которым не доверяете VM GitHub. Пиньте конкретную версию ubuntu (ubuntu-22.04) для воспроизводимости после стабилизации образа.

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

Ловушки GitHub-hosted runners: ubuntu-latest тихо меняет major-версию OS (внезапно список apt-пакетов другой); self-hosted runner оставлен online + idle (security-риск — авто-выключение через actions/runner-action-listener или похожее); self-hosted runners не изолированы per repo (malicious workflow одного репо pwn-ит другие, делящие runner).

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

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