Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.

选择作业的运行器

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

概述

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

  • 目标计算机可以是 GitHub 托管的运行器larger runner自托管运行器。 - 你可以根据分配给运行器的标签、其组成员身份或两者的组合来定位运行器。
  • 可以将 runs-on 作为单个字符串或字符串数组提供。
  • 如果指定字符串数组,工作流将在与所有指定 runs-on 值匹配的任何运行器上执行。
  • 如果要在多台计算机上运行工作流,请使用 jobs.<job_id>.strategy

选择 GitHub 托管的运行器

如果使用 GitHub 托管的运行器,每个作业将在 runs-on 指定的运行器映像的新实例中运行。

可用的 GitHub 托管的运行器类型包括:

运行器映像 YAML 工作流标签 说明
Windows Server 2022 windows-latestwindows-2022 windows-latest 标签当前使用 Windows Server 2022 运行器映像。
Windows Server 2019 windows-2019
Ubuntu 22.04 ubuntu-latestubuntu-22.04 ubuntu-latest 标签当前使用 Ubuntu 22.04 运行器映像。
Ubuntu 20.04 ubuntu-20.04
Ubuntu 18.04 [已弃用] ubuntu-18.04 迁移到 ubuntu-20.04ubuntu-22.04。 有关详细信息,请参阅此 GitHub 博客文章
macOS Monterey 12 macos-latestmacos-12 macos-latest 标签当前使用 macOS 12 运行器映像。
macOS Big Sur 11 macos-11
macOS Catalina 10.15 [已弃用] macos-10.15 迁移到 macOS-11macOS-12。 有关详细信息,请参阅此 GitHub 博客文章

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

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

示例:指定操作系统

runs-on: ubuntu-latest

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

选择自托管运行器

要为作业指定自托管运行器,请在工作流文件中使用自托管运行器标签配置 runs-on

所有自托管运行器都有 self-hosted 标签。 仅使用此标签将选择任何自托管运行器。 选择符合特定条件的运行器,例如操作系统或体系结构,建议提供以 self-hosted 开头的标签数组(必须首先列出),然后根据需要包含其他标签。 指定标签数组时,作业将在具有你指定的所有标签的运行器上排队。

尽管 self-hosted 标签不是必需的,但强烈建议在使用自托管运行器时指定它,以确保作业不会无意中指定任何当前或将来的 GitHub 托管运行器。

示例:使用标签进行运行器选择

runs-on: [self-hosted, linux]

有关详细信息,请参阅“关于自托管运行器”和“在工作流中使用自托管运行器”。

在组中选择运行器

可以使用 runs-on 定位运行器组,以便作业将在属于该组的任何运行器上执行。 若要进行更精细的控制,还可以将运行器组与标签组合在一起。

运行器组只能将 larger runner自托管运行器作为成员。

示例:使用组控制作业的运行位置

在此示例中,Ubuntu 16 核心运行器已添加到名为 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 16 核心运行器(分配了标签 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@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v