Требования для компьютеров локальных средств выполнения тестов
Вы можете использовать компьютер в качестве локального runner до тех пор, пока он соответствует следующим требованиям:
- На этом компьютере можно установить и запустить приложение локального средства выполнения тестов. См. сведения о поддерживаемых операционных системах и поддерживаемых архитектурах процессора.
- Компьютер может взаимодействовать с GitHub Actions.
- На компьютере достаточно аппаратных ресурсов для того типа рабочих процессов, которые вы планируете запускать. Само приложение локального средства выполнения тестов требует только минимальных ресурсов.
- Если вы хотите запускать рабочие процессы, использующие действия контейнеров Docker или контейнеры служб, необходимо использовать компьютер Linux и установить Docker.
Поддерживаемые операционные системы
Linux
- Red Hat Enterprise Linux 8 или более поздней версии
- CentOS 8 или более поздней версии
- Oracle Linux 8 или более поздней версии
- Fedora 29 или более поздней версии
- Debian 10 или более поздней версии
- Ubuntu 20.04 или более поздней версии
- Linux Mint 20 или более поздней версии
- openSUSE 15.2 или более поздней версии
- SUSE Enterprise Linux (SLES) 15 с пакетом обновления 2 (SP2) или более поздней версии
Windows
- Windows 10 64-разрядная версия
- Windows 11 64-разрядная версия
- Windows Server 2016, 64-разрядная версия
- Windows Server 2019 64-разрядная
- Windows Server 2022 64-разрядная версия
macOS
- macOS 11.0 (Big Sur) или более поздней версии
Поддерживаемые архитектуры процессора
-
`x64` — Linux, macOS, Windows. -
`ARM64` — Linux, macOS, Windows (в настоящее время в public preview). -
`ARM32` -Линукс.
Приоритет маршрутизации для локальных средств выполнения
При маршрутизации задания в локальном средстве выполнения GitHub ищет средство выполнения, соответствующее меткам и группам задания runs-on :
- Если GitHub находит интерактивный и неактивный runner, соответствующий меткам и группам задания
runs-on, задание будет назначено и отправлено в средство выполнения.- Если средство выполнения не принимает назначенное задание в течение 60 секунд, задание снова ставится в очередь для поиска нового средства выполнения.
- Если GitHub не находит интерактивный и неактивный runner, соответствующий меткам и группам задания
runs-on, задание будет оставаться в очереди до тех пор, пока средство выполнения не появится в сети. - После нахождения в очереди в течение 24 часов задание завершается сбоем.
Автомасштабирование
Автомасштабирование позволяет динамически регулировать количество самостоятельных бегунов в зависимости от спроса. Это помогает оптимизировать использование ресурсов и обеспечивает достаточную пропускную способность для бегов в периоды пик, снижая затраты в периоды низкой активности. Существует множество подходов к реализации автомасштабирования для самостоятельных раннеров, каждый из которых имеет свои компромиссы по сложности, надёжности и отзывчивости.
Actions Runner Controller
GitHub размещённые раннеры по своей природе автоматически масштабируются в зависимости от ваших потребностей. GitHub размещённые раннеры могут быть низкозатратной и экономичной альтернативой разработке или реализации решений для автомасштабирования. Дополнительные сведения см. в разделе Средства выполнения тестов, размещенные в GitHub.
Actions Runner Controller (ARC) — это эталонная реализация API масштабных множеств GitHub и рекомендуемое решение на базе Kubernetes для автомасштабирования самостоятельных раннеров. ARC предоставляет полное, готовое к производству решение для автомасштабирования для команд, выполняющих GitHub Actions в средах Kubernetes.
GitHub рекомендует ARC для организаций с инфраструктурой Kubernetes и команд, обладающих экспертизой в Kubernetes. ARC управляет полным жизненным циклом раннеров в вашем кластере — от провизии до выполнения заданий и очистки.
Дополнительные сведения см. в разделе [AUTOTITLE и Контроллер runner действий](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-support-for-actions-runner-controller).
GitHub Actions Клиент набора Runner Scale
GitHub Actions Runner Scale Set Client — это автономный модуль на базе Go, который даёт возможность командам платформ, интеграторам и поставщикам инфраструктуры создавать собственные решения для автомасштабирования для GitHub Actions раннеров на виртуальных машинах, контейнерах, локальной инфраструктуре и облачных сервисах, с поддержкой платформ Windows, Linux и macOS.
Клиент оркестрирует GitHub взаимодействия API для масштабных наборов, оставляя инфраструктуру за вами. Вы определяете, как создаются, масштабируются и уничтожаются раннеры, а также настраиваете раннеров с несколькими метками для гибкой маршрутизации и таргетинга заданий. Это даёт организациям детальный контроль над управлением жизненным циклом бегуна и телеметрией в реальном времени для выполнения задач.
Клиент разработан так, чтобы работать сразу с базовыми конфигурациями, что позволяет командам быстро реализовать автомасштабирование. Однако её истинная сила заключается в гибкости — клиент создан для расширения и настройки с учётом специфических инфраструктурных требований каждой организации, ограничений по соответствию и операционным рабочим процессам. Независимо от того, нужна ли вам простая логика масштабирования или сложные стратегии мульти-окружного провидения, клиент адаптируется под ваши потребности.
GitHub Actions Runner Scale Set Client — это проект с открытым исходным кодом. Репозиторий действий/масштабирования содержит полный исходный код, исчерпывающую документацию и практические примеры, которые помогут вам начать. Вы найдёте руководства по внедрению, примеры конфигураций для различных инфраструктурных сценариев и эталонные архитектуры, показывающие, как интегрировать клиента с разными системами предоставления услуг. Репозиторий также включает рекомендации для команд, заинтересованных в расширении клиента или обмене своими паттернами автомасштабирования с сообществом.
**Примечание:** Клиент Runner Scale Set не заменяет Actions Runner Controller (ARC), который остаётся эталонной реализацией API масштабных наборов и рекомендуемым решением Kubernetes для автомасштабирования раннеров. Вместо этого клиент — это дополнительный инструмент для взаимодействия с одинаковыми масштабными API для создания собственных решений для автомасштабирования вне Kubernetes.
Временные бегуны для автомасштабирования
GitHub рекомендует реализовать автомасштабирование с помощью временных локальных средств выполнения. Автомасштабирование с постоянными локальными средствами выполнения не рекомендуется. В некоторых случаях GitHub не может гарантировать, что задания не назначаются постоянным средствам выполнения, которые завершили работу. При использовании временных средств выполнения это может быть гарантировано, так как GitHub назначает средству выполнения только одно задание.
Такой подход позволяет управлять средствами выполнения как временными системами, так как вы можете использовать автоматизацию для обеспечения новой среды для каждого задания. Это помогает ограничить уязвимость любых конфиденциальных ресурсов из предыдущих заданий, а также снизить риск получения новых заданий скомпрометированным средством выполнения.
Предупреждение
Файлы журнала приложений runner для временных модулей запуска должны быть перенаправляться во внешнее решение хранилища журналов для устранения неполадок и диагностики. Хотя для развертывания временных средств выполнения не требуется, GitHub рекомендует перенаправлять и сохранять журналы запуска перед развертыванием эфемерного решения автомасштабирования в рабочей среде. Дополнительные сведения см. в разделе Мониторинг и устранение неполадок в самостоятельно размещенных средствах выполнения.
Чтобы добавить в вашу среду временное средство выполнения, включите параметр --ephemeral при регистрации средства выполнения с помощью config.sh. Например:
./config.sh --url https://github.com/octo-org --token example-token --ephemeral
Служба GitHub Actions автоматически отменяет регистрацию средства выполнения после обработки одного задания. Затем вы можете создать собственную автоматизацию, которая очищает средство выполнения после отмены его регистрации.
Примечание.
Если задание помечено для определенного типа runner, но ни одно соответствующее типу недоступно, задание не сразу завершается ошибкой во время очереди. Оно будет оставаться в очереди до истечения 24-часового периода ожидания.
Кроме того, вы можете создавать временные и JIT-бегуны с помощью REST API. Дополнительные сведения см. в разделе Конечные точки REST API для локальных runners.
Обновления программного обеспечения runner для локальных runners
По умолчанию локальные средства выполнения будут автоматически выполнять обновление программного обеспечения каждый раз, когда становится доступной новая версия программного обеспечения средства выполнения. Если в контейнерах используются временные средства выполнения, это может привести к неоднократным обновлениям программного обеспечения при выпуске новой версии средства выполнения. Отключение автоматических обновлений позволяет обновлять версию средства выполнения в образе контейнера напрямую по собственному расписанию.
Чтобы отключить автоматическое обновление программного обеспечения и устанавливать обновления программного обеспечения самостоятельно, укажите флаг --disableupdate при регистрации средства выполнения с помощью config.sh. Например:
./config.sh --url https://github.com/YOUR-ORGANIZATION --token EXAMPLE-TOKEN --disableupdate
Если автоматические обновления отключены, необходимо регулярно обновлять версию средства выполнения. Для использования новых функциональных возможностей в GitHub Actions требуются изменения как в службе GitHub Actions, так и в программном обеспечении средства выполнения. Средство выполнения не сможет правильно обрабатывать задания, использующие новые функции в GitHub Actions, без обновления программного обеспечения.
Если вы отключаете автоматическое обновление, то должны будете обновлять версию средства выполнения в течение 30 дней после того, как станет доступной новая версия. Вы можете подписаться на уведомления о выпусках в репозиторииactions/runner. Дополнительные сведения см. в разделе Настройка уведомлений.
Инструкции по установке последней версии средства выполнения см. в инструкциях по установке последнего выпуска.
Предупреждение
Любые обновления, выпущенные для программного обеспечения, включая основные, второстепенные выпуски или патчи, считаются доступными обновлениями. Если обновление программного обеспечения не выполняется в течение 30 дней, служба GitHub Actions не будет ставить задания в очередь в средство выполнения. Кроме того, если требуется критическое обновление системы безопасности, служба GitHub Actions не будет помещать задания в очередь для вашего средства выполнения до его обновления.
Веб-перехватчики для автомасштабирования
Вы можете создать собственную среду автомасштабирования с помощью полезных данных, полученных от веб-перехватчика workflow_job. Этот веб-перехватчик доступен на уровне репозитория, организации и предприятия, а полезные данные для этого события содержат ключ action, соответствующий этапам жизненного цикла задания рабочего процесса, например, когда задания queued, in_progress и completed. Затем вы должны создать собственную автоматизацию масштабирования в ответ на эти полезные данные веб-перехватчика.
- Дополнительные сведения о веб-перехватчике см. в
workflow_jobразделе События и полезные данные веб-перехватчика. - Сведения о работе с веб-перехватчиками см. в разделе Документация по веб-перехватчикам.
**Примечание:** Этот подход основан на своевременности доставки webhook для принятия решений о масштабировании, что может привести к задержкам и проблемам с надёжностью. Рассмотрите возможность использования Actions Controller или Scale Set Client для сценариев автомасштабирования больших объемов.
Требования к проверке подлинности
Вы можете регистрировать и удалять репозиторий и локальные средства выполнения организации с помощью API. Для проверки подлинности в API в вашей реализации автомасштабирования может использоваться маркер доступа или приложение GitHub.
Для маркера доступа потребуется следующая область.
- Для частных репозиториев используйте маркер доступа с областью
repo. - Для общедоступных репозиториев используйте маркер доступа с областью
public_repo. - Для организаций используйте маркер доступа с областью
admin:org.
Для проверки подлинности с помощью приложения GitHub необходимо назначить следующие разрешения.
- Для репозиториев назначьте разрешение
administration. - Для организаций назначьте разрешение
organization_self_hosted_runners.
Вы можете регистрировать и удалять локальные средства выполнения предприятия с помощью API. Для проверки подлинности в API в вашей реализации автомасштабирования может использоваться маркер доступа.
Для маркера доступа потребуется область manage_runners:enterprise.
Коммуникации
Локальные средства выполнения подключаются к GitHub для получения назначений заданий и скачивания новых версий приложения запуска.
Приложение средства запуска GitHub Actions предоставляется с открытым кодом. Сведения о проблемах можно внести в репозиторий средства выполнения. При выпуске новой версии приложение runner автоматически обновляется, когда задание назначается средству выполнения или в течение недели после того, как средство выполнения не было назначено каких-либо заданий.
Требования к обмену данными с GitHub
- Для принятия и запуска заданий GitHub Actions на локальном компьютере должен быть запущено локальное приложение runner.
- Хост-компьютер должен иметь соответствующий сетевой доступ с по крайней мере 70 килобит в секунду отправкой и скоростью загрузки.
- Хост-компьютер должен иметь возможность выполнять исходящие HTTPS-подключения через порт 443.
- В зависимости от функции рабочих процессов, назначенных локальному средству выполнения, хост-компьютер должен иметь возможность взаимодействовать с доменами GitHub, перечисленными ниже.
Доступные домены по функциям
Примечание.
Некоторые из перечисленных доменов настраиваются с помощью CNAME записей. Для некоторых брандмауэров может потребоваться рекурсивно добавить правила для всех записей CNAME. Обратите внимание, что CNAME записи могут измениться в будущем, и что только перечисленные домены останутся постоянными.
Требуется для основных операций:
github.com api.github.com *.actions.githubusercontent.com
github.com
api.github.com
*.actions.githubusercontent.com
**Требуется для загрузки действий:**
codeload.github.com
codeload.github.com
**Требуется для отправки и скачивания сводок заданий, журналов, артефактов рабочих процессов и кэшей:**
results-receiver.actions.githubusercontent.com *.blob.core.windows.net
results-receiver.actions.githubusercontent.com
*.blob.core.windows.net
**Требуется для обновления версий средства выполнения тестов:**
objects.githubusercontent.com objects-origin.githubusercontent.com github-releases.githubusercontent.com github-registry-files.githubusercontent.com
objects.githubusercontent.com
objects-origin.githubusercontent.com
github-releases.githubusercontent.com
github-registry-files.githubusercontent.com
**Требуется для получения маркеров OIDC:**
*.actions.githubusercontent.com
*.actions.githubusercontent.com
**Требуется для скачивания или публикации пакетов или контейнеров в GitHub Пакеты:**
*.pkg.github.com pkg-containers.githubusercontent.com ghcr.io
*.pkg.github.com
pkg-containers.githubusercontent.com
ghcr.io
**Требуется для Хранилище больших файлов Git**
github-cloud.githubusercontent.com github-cloud.s3.amazonaws.com
github-cloud.githubusercontent.com
github-cloud.s3.amazonaws.com
Требуется для заданий для Dependabot updates
dependabot-actions.githubapp.com
dependabot-actions.githubapp.com
**Требуется для скачивания ресурсов выпуска:**
release-assets.githubusercontent.com
release-assets.githubusercontent.com
**Требуется для виртуальной сети:**
api.snapcraft.io
api.snapcraft.io
Кроме того, рабочему процессу может потребоваться доступ к другим сетевым ресурсам.
Если вы используете список разрешенных IP-адресов для вашей организации GitHub или корпоративной учетной записи, необходимо добавить IP-адрес локального средства выполнения тестов в этот список разрешений. См. статью "Управление разрешенными IP-адресами для вашей организации или применение политик безопасности для параметров безопасности в организации в документации GitHub Enterprise Cloud. % else %}.