GitHub Actions Runner Images За кулисами виртуальных машин для CI/CD
Представьте, что вам нужно запустить тесты вашего приложения одновременно на Ubuntu, Windows и macOS. Вручную настраивать три разные машины? Нет, спасибо! Именно здесь на сцену выходят GitHub Actions Runner Images — предварительно настроенные образы виртуальных машин, которые делают жизнь разработчиков намного проще.
Что скрывается за образами runner'ов?
Репозиторий actions/runner-images — это источник истины для всех, кто использует GitHub Actions или Azure Pipelines. Здесь хранятся конфигурации виртуальных машин, которые:
- Автоматически запускают ваши workflow в GitHub Actions
- Работают как агенты в Azure DevOps
Интересный факт: эти же образы используются внутри Microsoft для своих нужд, так что можете быть уверены в их качестве.
Какие ОС доступны «из коробки»?
GitHub поддерживает впечатляющий спектр операционных систем:
Linux
- Ubuntu 24.04 (тег
ubuntu-latest) - Ubuntu 22.04
macOS
- macOS 15 (включая Arm64 версию)
- macOS 14 (включая Arm64)
- macOS 13 (включая Arm64)
Windows
- Windows Server 2025
- Windows Server 2022 (
windows-latest) - Windows Server 2019 (уже deprecated)
Каждый образ содержит сотни предустановленных инструментов — от Docker и Node.js до специфических SDK. Например, на Ubuntu вы найдёте даже такие нишевые вещи, как HHvm и GNU Fortran.
Как работают обновления?
- Еженедельные апдейты: Каждую неделю образы получают обновления ПО. При этом версии инструментов могут меняться — что важно учитывать в CI.
- Миграция на новые ОС: Когда выходит новая версия ОС (например, Ubuntu 24.04), метка
-latestпостепенно (за 1-2 месяца) переносится на неё. - Статусы развёртывания: За прогрессом обновлений можно следить через badges в README или подписавшись на релизы репозитория.
Совет из практики: если ваши тесты критичны к версии ОС, указывайте конкретный тег (например, ubuntu-22.04), а не ubuntu-latest.
Что внутри образов?
Политика предустановки инструментов впечатляет своей продуманностью:
- Популярные языки:
- Java: все LTS версии
- Node.js: 3 последних LTS
- Python: 5 самых популярных версий
- Специфичные инструменты:
- Android NDK: 1 не-LTS и 2 LTS версии
- Xcode: все версии для текущего macOS
Любопытный момент: для .NET Core поддерживаются только 2 последних LTS и 1 текущая версия — видимо, чтобы не раздувать образы.
Когда стоит заглянуть в этот репозиторий?
- Отладка падающего CI: Проверить, не изменилась ли версия ключевого инструмента.
- Запрос нового ПО: Хотите, чтобы в образах предустанавливался ваш любимый инструмент? Можно создать issue.
- Создание кастомных образов: Хотя официально поддерживается только main-ветка для сборки.
Личный опыт использования
Работая с GitHub Actions, я несколько раз сталкивался с ситуациями, когда:
- Тесты падали из-за обновления версии Node.js
- Не хватало специфичной версии Python
Знание политик обновления образов (которые подробно описаны в репозитории) помогло быстро решить эти проблемы.
Репозиторий runner-images — это must-know для всех, кто серьезно работает с GitHub Actions. Он не только даёт понимание, на чём работают ваши CI-пайплайны, но и позволяет:
- Предвидеть проблемы с обновлениями
- Запрашивать нужные инструменты
- Глубже понимать систему в целом
Особенно рекомендую изучить его:
- DevOps-инженерам
- Разработчикам, чьи тесты зависят от окружения
- Всем, кто хочет выжать максимум из GitHub Actions
P.S. Если вы ещё не подписаны на релизы этого репозитория — самое время это сделать. Trust me, ваш будущий я скажет вам спасибо, когда очередное обновление не сломает production.
