注意
GitHub Enterprise Server 目前不支持 GitHub 托管的运行器。
概述
使用 jobs.<job_id>.runs-on 定义要运行作业的计算机类型。
- 
目标计算机可以是自托管运行器。
 - 
可基于分配给运行器的标签或其组成员身份或两者的组合,面向这些运行器。
 - 
可以提供以下形式的
runs-on:- 单个字符串
 - 包含字符串的单个变量
 - 字符串数组、包含字符串的变量或两者的组合
 - 使用 
group或labels键的key: value对 
 - 
如果指定字符串数组,工作流将在与所有指定
runs-on值匹配的运行器上执行。 例如,此处的作业将仅在具有标签linux、x64和gpu的自托管运行器上运行:runs-on: [self-hosted, linux, x64, gpu]有关详细信息,请参阅“选择自托管运行程序”。
 - 
可以在数组中混合使用字符串和变量。 例如:
on: workflow_dispatch: inputs: chosen-os: required: true type: choice options: - Ubuntu - macOS jobs: test: runs-on: [self-hosted, "${{ inputs.chosen-os }}"] steps: - run: echo Hello world! - 
如果要在多台计算机上运行工作流,请使用
jobs.<job_id>.strategy。 
注意
像 self-hosted 这样的简单字符串前后不需要引号,但  "${{ inputs.chosen-os }}"
等表达式前后需要引号。
选择 GitHub 托管的运行器
注意
GitHub Enterprise Server 目前不支持 GitHub 托管的运行器。
选择自托管运行器
要为作业指定自托管运行器,请在工作流文件中使用自托管运行器标签配置 runs-on。
自托管运行器可能具有 self-hosted 标签。 设置自托管运行器时,默认情况下,我们将包含标签 self-hosted。 可以传递 --no-default-labels 标志以防止应用自托管标签。 标签可用于为运行器创建目标选项(例如,操作系统或体系结构),建议提供以 self-hosted 开头的标签数组(必须首先列出),然后根据需要包含其他标签。 指定标签数组时,作业将在具有你指定的所有标签的运行器上排队。
请注意,Actions Runner Controller 不支持多个标签,并且不支持 self-hosted 标签。
示例:使用标签进行运行器选择
runs-on: [self-hosted, linux]
有关详细信息,请参阅 自托管运行程序 和 在工作流中使用自托管运行程序。
在组中选择运行器
可以使用 runs-on 定位运行器组,以便作业将在属于该组的任何运行器上执行。 若要进行更精细的控制,还可以将运行器组与标签组合在一起。
示例:使用组控制作业的运行位置
在此示例中,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 的运行器组使用 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@v5
      - uses: actions/setup-node@v4
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v
示例:使用前缀区分运行器组
例如,如果组织中有一个名为 my-group 的运行器组,企业中有另一个名为 my-group 的运行器组,则可以更新工作流文件以使用 org/my-group 或 ent/my-group 来区分这两者。
使用 org/:
runs-on:
  group: org/my-group
  labels: [ self-hosted, label-1 ]
使用 ent/:
runs-on:
  group: ent/my-group
  labels: [ self-hosted, label-1 ]