Skip to main content

选择作业的运行器

定义将在工作流程中处理作业的计算机类型。

概述

使用 jobs.<job_id>.runs-on 定义要运行作业的计算机类型。

  • 目标计算机可以是 GitHub 托管的运行器大型运行器自托管运行器

  • 你可以根据分配给运行器的标签、其组成员身份或两者的组合来定位运行器。

  • 可以提供以下形式的 runs-on

    • 单个字符串
    • 包含字符串的单个变量
    • 字符串数组、包含字符串的变量或两者的组合
    • 使用 grouplabels 键的 key: value
  • 如果指定字符串数组,工作流将在与所有指定 runs-on 值匹配的运行器上执行。 例如,此处的作业将仅在具有标签 linuxx64gpu 的自托管运行器上运行:

    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 托管的运行器,每个作业将在 runs-on 指定的运行器映像的新实例中运行。

使用 GitHub 托管的运行器时,运行时的值是运行器标签或运行器组名称。 标准 GitHub 托管的运行器的标签如下表所示。

有关详细信息,请参阅“关于 GitHub 托管的运行程序”。

用于公共存储库的 GitHub 托管的标准运行器

对于公共存储库,使用下表所示工作流标签的作业可在具有关联规范的虚拟机上运行。 可以在公共存储库上免费且无限制地使用这些运行器。

虚拟机 处理器 (CPU) 内存 (RAM) 存储 (SSD) 工作流标签
Linux 4 16 GB 14 GB ubuntu-latestubuntu-24.04ubuntu-22.04ubuntu-20.04
Windows 4 16 GB 14 GB windows-latestwindows-2022windows-2019
macOS 3 14 GB 14 GB macos-12
macOS 4 14 GB 14 GB macos-13
macOS 3 (M1) 7 GB 14 GB macos-latestmacos-14macos-15 [公共预览版]

适用于内部存储库和专用存储库的标准 GitHub 托管的运行器

对于内部存储库和专用存储库,使用下表所示工作流标签的工作可在具有关联规范的虚拟机上运行。 这些运行程序使用 GitHub 帐户分配的免费分钟数,然后按每分钟费率收费。 有关详细信息,请参阅“关于 GitHub Actions 的计费”。

虚拟机 处理器 (CPU) 内存 (RAM) 存储 (SSD) 工作流标签
Linux 2 7 GB 14 GB ubuntu-latestubuntu-24.04ubuntu-22.04ubuntu-20.04
Windows 2 7 GB 14 GB windows-latestwindows-2022windows-2019
macOS 3 14 GB 14 GB macos-12
macOS 4 14 GB 14 GB macos-13
macOS 3 (M1) 7 GB 14 GB macos-latestmacos-14macos-15 [公共预览版]

除了标准 GitHub 托管的运行器之外,GitHub 还在 GitHub Team 和 GitHub Enterprise Cloud 计划中为客户提供一系列具有更多高级功能的托管虚拟机,如更多核心和磁盘空间、GPU 支持的计算机以及 RAM 支持的计算机。 有关详细信息,请参阅“关于较大的运行器”。

注意:-latest 运行器映像是 GitHub 提供的最新稳定映像,但可能不是操作系统供应商提供的最新版本的操作系统。

警告:beta 版映像和已弃用的映像“按原样提供”、“包含全部错误”且“视可用性情况”提供,不在服务级别协议和保证的涵盖范围之内。 客户支持可能不会涵盖 Beta 版映像。

示例:指定操作系统

runs-on: ubuntu-latest

有关详细信息,请参阅“使用 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@v4
      - 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 键将 grouplabels 组合在一起,以便将作业路由到具有匹配标签的组内的任何可用运行器:

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

示例:使用前缀区分运行器组

例如,如果组织中有一个名为 my-group 的运行器组,企业中有另一个名为 my-group 的运行器组,则可以更新工作流文件以使用 org/my-groupent/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 ]