Skip to main content
Мы публикуем частые обновления нашей документации, и перевод этой страницы может все еще выполняться. Актуальные сведения см. в документации на английском языке.

О средствах выполнения, размещенных в GitHub

GitHub предлагает размещенные виртуальные машины для выполнения рабочих процессов. Виртуальная машина содержит среду инструментов, пакетов и параметров, доступных для использования в GitHub Actions.

Обзор средств выполнения, размещенных на GitHub

Средства выполнения — это компьютеры, выполняющие задания в рабочем процессе GitHub Actions. Например, средство выполнения может клонировать репозиторий локально, установить тестовое программное обеспечение, а затем выполнить команды, которые оценивают код.

GitHub предоставляет средства выполнения, которые можно использовать для выполнения заданий или размещения собственных средств выполнения. Каждое средство выполнения, размещенное на GitHub, — это новая виртуальная машина, размещенная на GitHub, с предварительно установленным приложением средства выполнения и другими средствами. Эта виртуальная машина может работать на Ubuntu Linux, Windows или macOS. Если вы используете средство выполнения, размещенное в GitHub, обслуживание и обновление компьютера будет делаться за вас.

Использование средства выполнения, размещенного на GitHub

Чтобы использовать средство выполнения, размещенное на GitHub, создайте задание и используйте runs-on, чтобы указать тип средства выполнения, обрабатывающего задание, например ubuntu-latest, windows-latest или macos-latest. Полный список типов средств выполнения см. в разделе Поддерживаемые средства выполнения и аппаратные ресурсы.

При запуске задания 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.
YAML
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:

Выходные данные задания в пользовательском интерфейсе Actions

Приложение средства запуска GitHub Actions предоставляется с открытым кодом. Сведения о проблемах можно внести в репозиторий средства выполнения.

Поддерживаемые средства выполнения и аппаратные ресурсы

Примечание. GitHub также предлагает larger runner, которые доступны в более крупных конфигурациях. Дополнительные сведения см. в разделе Спецификации компьютера для larger runners.

Спецификация оборудования для виртуальных машин Windows и Linux:

  • Двухъядерный ЦП (x86_64)
  • 7 ГБ ОЗУ
  • 14 ГБ пространства SSD

Спецификация оборудования для виртуальных машин macOS:

  • Трехъядерный ЦП (x86_64)
  • 14 ГБ ОЗУ
  • 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 Monterey 12 macos-latest или macos-12 В macos-latest настоящее время метка использует образ средства выполнения тестов macOS 12.
macOS Big Sur 11 macos-11
macOS Catalina 10.15 [нерекомендуемая] macos-10.15 Миграция на macOS-11 или macOS-12. Дополнительные сведения см. в этой записи блога GitHub.

Примечание. Образы средства выполнения тестов -latest — это последние стабильные образы, предоставляемые GitHub, и они могут не быть самой последней версией операционной системы, доступной от производителя операционной системы.

Предупреждение: Бета-версии и нерекомендуемые образы предоставляются "как есть", "со всеми сбоями" и "по мере доступности" и исключаются из соглашения об уровне обслуживания и гарантии. Для образов бета-версий может не оказываться поддержка.

В журналах рабочих процессов указывается средство выполнения, использовавшееся для запуска задания. Дополнительные сведения см. в статье "Просмотр журнала выполнения рабочего процесса".

Поддерживаемое программное обеспечение

Программные инструменты, которые включены в средства выполнения, размещенные в GitHub, обновляются еженедельно. Процесс обновления занимает несколько дней, а список предустановленного программного обеспечения в ветви main обновляется после завершения всего развертывания.

Предустановленное программное обеспечение

Журналы рабочих процессов включают ссылку на предустановленные инструменты в точном средстве выполнения. Чтобы найти эти сведения в журнале рабочего процесса, разверните раздел Set up job. В этом разделе разверните раздел Runner Image. Ссылка, следующая за Included Software, описывает предустановленные инструменты в средстве выполнения, которое выполняло рабочий процесс. Ссылка на установленное программное обеспечение Дополнительные сведения см. в разделе Просмотр журнала выполнения рабочего процесса.

Общий список включенных инструментов для каждой операционной системы средства выполнения см. по ссылкам ниже.

Средства выполнения, размещенные в GitHub, включают встроенные инструменты операционной системы по умолчанию в дополнение к пакетам, перечисленным в приведенных выше ссылках. Например, средства выполнения Ubuntu и macOS включают grep, find, which и другие инструменты по умолчанию.

Вы также можете просмотреть список материалов по программному обеспечению (SBOM) для каждой сборки образов средств выполнения Windows и Ubuntu. Дополнительные сведения см. в разделе Проверка цепочки поставок для средств выполнения тестов, размещенных в GitHub.

Использование предустановленного программного обеспечения

Для взаимодействия с программным обеспечением, установленным в средствах выполнения, рекомендуется использовать действия. Такой подход имеет несколько преимуществ.

  • Как правило, действия предоставляют более гибкие функциональные возможности, такие как выбор версий, возможность передачи аргументов и параметры.
  • Он гарантирует, что версии инструментов, используемые в рабочем процессе, останутся неизменными независимо от обновлений программного обеспечения.

Если вы хотите запросить какой-либо инструмент, откройте проблему в разделе 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 в ответе конечной точки Получение метаданных GitHub.

Средства выполнения Windows и Ubuntu размещаются в Azure и, следовательно, имеют те же диапазоны IP-адресов, что и центры обработки данных Azure. Средства выполнения macOS размещаются в облаке macOS, принадлежащем GitHub.

Так как существует много диапазонов IP-адресов для средств выполнения, размещенных в GitHub, не рекомендуется использовать их в качестве списков разрешенных IP-адресов для внутренних ресурсов.

Список IP-адресов GitHub Actions, возвращаемых API, обновляется раз в неделю.

Файловые системы

GitHub выполняет действия и команды оболочки в определенных каталогах на виртуальной машине. Пути к файлам на виртуальных машинах не являются статическими. Используйте переменные среды, предоставляемые GitHub, для создания путей к файлам в каталогах home, workspaceи workflow.

КаталогПеременная средыОписание
homeHOMEСодержит данные, связанные с пользователем. Например, этот каталог может содержать учетные данные из попытки входа.
workspaceGITHUB_WORKSPACEВ этом каталоге выполняются действия и команды оболочки. Действие может изменить содержимое этого каталога, к которому могут обращаться последующие действия.
workflow/event.jsonGITHUB_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

Дополнительные материалы