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

Использование локальных средств выполнения в рабочем процессе

Чтобы использовать локальные средства выполнения тестов в рабочем процессе, можно использовать метки или groups, чтобы указать средство выполнения для задания.

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

Сведения о метках локального средства выполнения тестов

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

Чтобы указать локальное средство выполнения тестов для задания, настройте runs-on в файле рабочего процесса, используя метки локального средства выполнения тестов.

Все локальные средства выполнения тестов имеют метку self-hosted. При использовании только этой метки будет выбрано любое локальное средство выполнения тестов. Чтобы выбрать средства выполнения тестов, которые соответствуют определенным критериям, таким как конкретная операционная система или архитектура, рекомендуется предоставить массив меток, начинающихся с self-hosted (сначала это должно быть указано), а затем включить дополнительные метки по мере необходимости. При указании массива меток задания будут помещены в очередь в средства выполнения тестов, которые имеют все указанные метки.

Несмотря на то что метка self-hosted не является обязательной, настоятельно рекомендуется указать ее при использовании локальных средств выполнения тестов, чтобы убедиться, что задание не указывает случайно текущие или будущие данные средства выполнения тестов, размещенные в GitHub.

Сведения о создании пользовательских меток и меток по умолчанию см. в разделе Использование меток с самостоятельно размещенными средствами выполнения.

Сведения о группах локальных средств выполнения

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

Чтобы указать локальную группу средств выполнения для задания, настройте runs-on.group в файле рабочего процесса.

Сведения о создании групп средств выполнения и управлении ими см. в разделе Управление доступом к самостоятельно размещенным средствам выполнения с помощью групп.

Использование меток по умолчанию для маршрутизации заданий

Локальное средство выполнения автоматически получает определенные метки при добавлении в GitHub Actions. Они служат для указания операционной системы и аппаратной платформы:

  • self-hosted — метка по умолчанию, применяемая ко всем локальным средствам выполнения;
  • linux, windows или macOS — применяется в зависимости от операционной системы;
  • x64, ARM или ARM64 — применяются в зависимости от архитектуры оборудования.

Код YAML рабочего процесса можно использовать для отправки заданий в средства выполнения с сочетанием этих меток. В этом примере выполнение задания допускается в локальном средстве выполнения со всеми тремя метками:

runs-on: [self-hosted, linux, ARM64]
  • self-hosted — задание выполняется в локальном средстве выполнения.
  • linux — использовать только средство выполнения на основе Linux.
  • ARM64 — использовать средство выполнения только на основе оборудования ARM64.

Метки по умолчанию являются фиксированными: их нельзя изменять или удалять. Пользовательские метки можно применять, если требуется больший контроль над маршрутизацией заданий.

Использование пользовательских меток для маршрутизации заданий

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

Например, если заданию требуется конкретный тип графического оборудования, можно создать пользовательскую метку gpu и назначить ее средствам выполнения с этим оборудованием. Выполнение задания допускается в локальном средстве выполнения, которому назначены все соответствующие метки.

В этом примере показано задание с сочетанием меток по умолчанию и пользовательских меток:

runs-on: [self-hosted, linux, x64, gpu]
  • self-hosted — задание выполняется в локальном средстве выполнения.
  • linux — использовать только средство выполнения на основе Linux.
  • x64 — использовать средство выполнения только на основе архитектуры x64.
  • gpu — эта пользовательская метка была вручную назначена локальным средствам выполнения с установленным GPU.

Метки работают в совокупности, то есть для обработки задания локальное средство выполнения должно иметь все четыре метки.

Использование групп для маршрутизации заданий

В этом примере средства выполнения Ubuntu добавлены в группу с именем ubuntu-runners. Ключ runs-on отправляет задание в любое доступное средство выполнения в ubuntu-runners группе:

name: learn-github-actions
on: [push]
jobs:
  check-bats-version:
    runs-on: 
      group: ubuntu-runners
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v

Использование меток и групп для маршрутизации заданий

При объединении групп и меток средство выполнения должно соответствовать обоим требованиям, чтобы иметь право на выполнение задания.

В этом примере группа средств выполнения с именем ubuntu-runners заполняется средствами выполнения Ubuntu, которым также назначена метка ubuntu-20.04-16core. Ключ runs-on объединяет group и labels , чтобы задание перенаправлялось в любое доступное средство выполнения в группе, которая также имеет соответствующую метку:

name: learn-github-actions
on: [push]
jobs:
  check-bats-version:
    runs-on:
      group: ubuntu-runners
      labels: ubuntu-20.04-16core
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v

Приоритет маршрутизации для локальных средств выполнения

При маршрутизации задания в локальное средство выполнения GitHub ищет средство выполнения, соответствующее меткам задания runs-on и (или) groups:

  • Если GitHub находит средство выполнения в сети и неактивное средство выполнения, соответствующее меткам задания runs-on и (или) groups, задание назначается и отправляется в средство выполнения.
    • Если средство выполнения не принимает назначенное задание в течение 60 секунд, задание снова ставится в очередь для поиска нового средства выполнения.
  • Если GitHub не находит в сети и неактивное средство выполнения, соответствующее меткам задания runs-on и (или) groups, задание будет оставаться в очереди до тех пор, пока средство выполнения не перейдет в режим "в сети".
  • После нахождения в очереди в течение 24 часов задание завершается сбоем.