Обзор средств выполнения, размещенных на GitHub
Средства выполнения — это компьютеры, выполняющие задания в рабочем процессе GitHub Actions. Например, средство выполнения может клонировать репозиторий локально, установить тестовое программное обеспечение, а затем выполнить команды, которые оценивают код.
GitHub предоставляет средства выполнения, которые можно использовать для выполнения заданий или размещения собственных средств выполнения. Каждое средство выполнения, размещенное на GitHub, — это новая виртуальная машина, размещенная на GitHub, с предварительно установленным приложением средства выполнения и другими средствами. Эта виртуальная машина может работать на Ubuntu Linux, Windows или macOS. Если вы используете средство выполнения, размещенное в GitHub, обслуживание и обновление компьютера будет делаться за вас.
Использование средства выполнения, размещенного на GitHub
Чтобы использовать средство выполнения, размещенное на GitHub, создайте задание и используйте runs-on
, чтобы указать тип средства выполнения, обрабатывающего задание, например ubuntu-latest
, windows-latest
или macos-latest
. Полный список типов средств выполнения тестов см. в разделе О средствах выполнения, размещенных в GitHub.
При запуске задания GitHub автоматически подготавливает новую виртуальную машину для этого задания. Все шаги в задании выполняются на виртуальной машине, а значит могут обмениваться информацией через файловую систему средства выполнения. Вы можете запускать рабочие процессы непосредственно на виртуальной машине или в контейнере Docker. По завершении задания виртуальная машина будет автоматически завершена.
На следующей схеме показано, как два задания в рабочем процессе выполняются в двух разных средствах выполнения, размещенных на GitHub.
В следующем примере рабочего процесса есть два задания: Run-npm-on-Ubuntu
и Run-PSScriptAnalyzer-on-Windows
. При активации этого рабочего процесса GitHub подготавливает новую виртуальную машину для каждого задания.
- Задание
Run-npm-on-Ubuntu
выполняется на виртуальной машине Linux, так как для параметраruns-on:
в задании указаноubuntu-latest
. - Задание
Run-PSScriptAnalyzer-on-Windows
выполняется на виртуальной машине Windows, так как для параметраruns-on:
в задании указаноwindows-latest
.
name: Run commands on different operating systems
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
Run-npm-on-Ubuntu:
name: Run npm on Ubuntu
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '14'
- run: npm help
Run-PSScriptAnalyzer-on-Windows:
name: Run PSScriptAnalyzer on Windows
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- name: Install PSScriptAnalyzer module
shell: pwsh
run: |
Set-PSRepository PSGallery -InstallationPolicy Trusted
Install-Module PSScriptAnalyzer -ErrorAction Stop
- name: Get list of rules
shell: pwsh
run: |
Get-ScriptAnalyzerRule
Во время выполнения задания журналы и выходные данные можно просмотреть в пользовательском интерфейсе GitHub:
Приложение средства запуска GitHub Actions предоставляется с открытым кодом. Сведения о проблемах можно внести в репозиторий средства выполнения.
Поддерживаемые средства выполнения и аппаратные ресурсы
Примечание. GitHub также предлагает Более крупное средство выполнения, которые доступны в более крупных конфигурациях. Дополнительные сведения см. в разделе Общие сведения о Более крупное средство выполнения.
Спецификация оборудования для виртуальных машин Windows и Linux:
- Двухъядерный ЦП (x86_64)
- 7 ГБ ОЗУ
- 14 ГБ пространства SSD
Спецификация оборудования для виртуальных машин macOS:
- Трехъядерный ЦП (x86_64)
- 14 ГБ ОЗУ
- 14 ГБ пространства SSD
Спецификация оборудования для виртуальных машин macOS XL:
- 12-ядерный ЦП (x86_64)
- 30 ГБ ОЗУ
- 14 ГБ пространства SSD
Образ средства выполнения тестов | Метка рабочего процесса YAML | Примечания |
---|---|---|
Windows Server 2022 |
windows-latest или windows-2022
|
В настоящее время метка windows-latest использует образ средства выполнения Windows Server 2022.
|
Windows Server 2019 |
windows-2019
|
Нет |
Ubuntu 22.04 |
ubuntu-latest или ubuntu-22.04
|
В ubuntu-latest настоящее время метка использует образ средства выполнения тестов Ubuntu 22.04.
|
Ubuntu 20.04 |
ubuntu-20.04
|
Ни один |
Ubuntu 18.04 [не рекомендуется] |
ubuntu-18.04
|
Миграция на ubuntu-20.04 или ubuntu-22.04 . Дополнительные сведения см. в этой записи блога GitHub.
|
macOS 13 Ventura [бета-версия] |
macos-13 или macos-13-xl
|
Нет |
macOS 12 Monterey |
macos-latest , macos-12 или macos-latest-xl macos-12-xl
|
Метки macos-latest рабочего процесса и macos-latest-xl в настоящее время используют образ средства выполнения тестов macOS 12. Сведения о ценах на поминутное средство выполнения macOS XL (12 ядер) см. в разделе Сведения о выставлении счетов за GitHub Actions.
|
macOS 11 Big Sur |
macos-11
|
Нет |
Примечание. Образы средства выполнения тестов -latest
— это последние стабильные образы, предоставляемые GitHub, и они могут не быть самой последней версией операционной системы, доступной от производителя операционной системы.
Предупреждение: Бета-версии и нерекомендуемые образы предоставляются "как есть", "со всеми сбоями" и "по мере доступности" и исключаются из соглашения об уровне обслуживания и гарантии. Для образов бета-версий может не оказываться поддержка.
В журналах рабочих процессов указывается средство выполнения, использовавшееся для запуска задания. Дополнительные сведения см. в разделе Просмотр истории выполнения рабочего процесса.
Поддерживаемое программное обеспечение
Программные инструменты, которые включены в средства выполнения, размещенные в GitHub, обновляются еженедельно. Процесс обновления занимает несколько дней, а список предустановленного программного обеспечения в ветви main
обновляется после завершения всего развертывания.
Предустановленное программное обеспечение
Журналы рабочих процессов включают ссылку на предустановленные инструменты в точном средстве выполнения. Чтобы найти эти сведения в журнале рабочего процесса, разверните раздел Set up job
. В этом разделе разверните раздел Runner Image
. Ссылка, следующая за Included Software
, описывает предустановленные инструменты в средстве выполнения, которое выполняло рабочий процесс.
Дополнительные сведения см. в разделе Просмотр истории выполнения рабочего процесса.
Общий список включенных инструментов для каждой операционной системы средства выполнения см. по ссылкам ниже.
- Ubuntu 22.04 LTS
- Ubuntu 20.04 LTS
- Windows Server 2022
- Windows Server 2019
- macOS 13
- macOS 12
- macOS 11
Средства выполнения, размещенные в GitHub, включают встроенные инструменты операционной системы по умолчанию в дополнение к пакетам, перечисленным в приведенных выше ссылках. Например, средства выполнения Ubuntu и macOS включают grep
, find
, which
и другие инструменты по умолчанию.
Вы также можете просмотреть список материалов по программному обеспечению (SBOM) для каждой сборки образов средств выполнения Windows и Ubuntu. Дополнительные сведения см. в разделе Защита системы безопасности для GitHub Actions.
Использование предустановленного программного обеспечения
Для взаимодействия с программным обеспечением, установленным в средствах выполнения, рекомендуется использовать действия. Такой подход имеет несколько преимуществ.
- Как правило, действия предоставляют более гибкие функциональные возможности, такие как выбор версий, возможность передачи аргументов и параметры.
- Он гарантирует, что версии инструментов, используемые в рабочем процессе, останутся неизменными независимо от обновлений программного обеспечения.
Если вы хотите запросить какой-либо инструмент, откройте проблему в разделе actions/runner-images. Этот репозиторий также содержит объявления обо всех основных обновлениях программного обеспечения для средств выполнения.
Установка дополнительного программного обеспечения
Вы можете устанавливать дополнительное программное обеспечение на средства выполнения, размещенные в GitHub. Дополнительные сведения см. в разделе Настройка средств выполнения тестов, размещенных в GitHub.
Облачные узлы, используемые средствами выполнения, размещенными в GitHub
GitHub размещает средства выполнения Linux и Windows на виртуальных машинах Standard_DS2_v2
в Microsoft Azure с установленным приложением средства выполнения GitHub Actions. Приложение средства выполнения, размещенного в GitHubявляется вилкой агента Azure Pipelines. Входящие пакеты ICMP блокируются для всех виртуальных машин Azure, поэтому команды проверки связи или traceroute могут не работать. Дополнительные сведения о ресурсах Standard_DS2_v2
см. в разделе Серии Dv2 и DSv2 в документации Microsoft Azure.
GitHub размещает средства выполнения macOS в облаке macOS, принадлежащем GitHub.
Непрерывность рабочих процессов
Если службы GitHub Actions временно недоступны, выполнение рабочего процесса отменяется, если он не был помещен в очередь в течение 30 минут после активации. Например, если рабочий процесс активируется и службы GitHub Actions недоступны в течение 31 минуты или дольше, выполнение рабочего процесса не будет обработано.
Кроме того, если выполнение рабочего процесса успешно поставлено в очередь, но не обработано средством выполнения, размещенным в GitHub, в течение 45 минут, запуск рабочего процесса в очереди отменяется.
Права администратора
Виртуальные машины Linux и macOS работают с использованием sudo
без пароля. Если необходимо выполнить команды или установить средства, требующие больше привилегий, чем имеется у текущего пользователя, можно использовать sudo
без необходимости вводить пароль. Дополнительные сведения см. в руководстве по sudo.
Виртуальные машины Windows настроены для запуска от имени администраторов с отключенной функцией контроля учетных записей (UAC). Дополнительные сведения см. в разделе Принцип работы контроля учетных записей пользователей в документации Windows.
IP-адреса
Примечание. Если вы используете список разрешенных IP-адресов для учетной записи вашей организации или предприятия GitHub, то не можете использовать средства выполнения, размещенные в GitHub. Вместо них вы должны использовать локальные средства выполнения. Дополнительные сведения см. в разделе О самостоятельно размещенных средствах выполнения.
Получить список диапазонов IP-адресов, которые используются GitHub Actions для средств выполнения, размещенных в GitHub, можно с помощью REST API GitHub. Дополнительные сведения см. в actions
разделе ключ в ответе конечной точки Meta.
Средства выполнения Windows и Ubuntu размещаются в Azure и, следовательно, имеют те же диапазоны IP-адресов, что и центры обработки данных Azure. Средства выполнения macOS размещаются в облаке macOS, принадлежащем GitHub.
Так как существует много диапазонов IP-адресов для средств выполнения, размещенных в GitHub, не рекомендуется использовать их в качестве списков разрешенных IP-адресов для внутренних ресурсов.
Список IP-адресов GitHub Actions, возвращаемых API, обновляется раз в неделю.
Файловые системы
GitHub выполняет действия и команды оболочки в определенных каталогах на виртуальной машине. Пути к файлам на виртуальных машинах не являются статическими. Используйте переменные среды, предоставляемые GitHub, для создания путей к файлам в каталогах home
, workspace
и workflow
.
Каталог | Переменная среды | Описание |
---|---|---|
home | HOME | Содержит данные, связанные с пользователем. Например, этот каталог может содержать учетные данные из попытки входа. |
workspace | GITHUB_WORKSPACE | В этом каталоге выполняются действия и команды оболочки. Действие может изменить содержимое этого каталога, к которому могут обращаться последующие действия. |
workflow/event.json | GITHUB_EVENT_PATH | Полезные данные POST события веб-перехватчика, которое активировало рабочий процесс. GitHub перезаписывает их каждый раз при выполнении действия для изоляции содержимого файла между действиями. |
Список переменных среды, создаваемых GitHub для каждого рабочего процесса, см. в разделе Переменные.
Файловая система контейнера Docker
Действия, выполняемые в контейнерах Docker, имеют статические каталоги по пути /github
. Однако мы настоятельно рекомендуем использовать переменные среды по умолчанию для создания путей к файлам в контейнерах Docker.
GitHub резервирует префикс пути /github
и создает три каталога для действий.
/github/home
/github/workspace
- Примечание. GitHub Actions должен выполнять пользователь Docker по умолчанию (root). Убедитесь, что в файле Dockerfile не задана инструкцияUSER
, иначе вы не сможете получить доступ кGITHUB_WORKSPACE
./github/workflow
Дополнительные материалы
- "Управление выставлением счетов для GitHub Actions"
- Вы можете использовать стратегию матрицы для выполнения заданий с несколькими образами. Дополнительные сведения см. в разделе Использование матрицы для заданий.