Ubuntu/macOS/Windows
Тема дорожной карты · GitHub Actions
GitHub-hosted runner'ы доступны на трёх семействах ОС: Ubuntu Linux (ubuntu-22.04, ubuntu-24.04, ubuntu-latest), Windows Server (windows-2022, windows-latest) и macOS (macos-13, macos-14, macos-latest), каждое из которых предустановлено с общими языками, инструментами сборки и CLI. ОС выбирается через ключ runs-on, а стратегия matrix позволяет развернуть задание на всех трёх для проверки кросс-платформенного поведения в одном CI/CD-запуске. Каждая версия runner'а имеет документированный список ПО, обновляемый ежемесячно, и закрепление конкретной версии защищает долгосрочные workflow от поломок при смене псевдонима. Выбор правильной ОС runner'а — первое решение в каждом GitHub Actions workflow, поскольку он определяет доступные инструменты, характеристики производительности и множитель стоимости в минутах.
Как это работает
Ubuntu/macOS/Windows: 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) для воспроизводимости после стабилизации образа.
Типичные ошибки
Ловушки Ubuntu/macOS/Windows: ubuntu-latest тихо меняет major-версию OS (внезапно список apt-пакетов другой); self-hosted runner оставлен online + idle (security-риск — авто-выключение через actions/runner-action-listener или похожее); self-hosted runners не изолированы per repo (malicious workflow одного репо pwn-ит другие, делящие runner).