Skip to main content

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

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

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

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

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

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

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

Чтобы создать отдельные локальные модули выполнения без меток по умолчанию, передайте --no-default-labels флаг при создании средства выполнения. Контроллер runner действий не поддерживает несколько меток.

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

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

Например, если заданию требуется конкретный тип графического оборудования, можно создать пользовательскую метку 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@v5
      - uses: actions/setup-node@v4
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v

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

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

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

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