概述
使用 jobs.<job_id>.runs-on
定义要运行作业的计算机类型。
- 目标计算机可以是 GitHub 托管的运行器、大型运行器 或 自托管运行器。 - 你可以根据分配给运行器的标签、其组成员身份或两者的组合来定位运行器。
- 可以将
runs-on
作为单个字符串或字符串数组提供。 - 如果指定字符串数组,工作流将在与所有指定
runs-on
值匹配的任何运行器上执行。 - 如果要在多台计算机上运行工作流,请使用
jobs.<job_id>.strategy
。
选择 GitHub 托管的运行器
如果使用 GitHub 托管的运行器,每个作业将在 runs-on
指定的运行器映像的新实例中运行。
可用的 GitHub 托管的运行器类型包括:
运行器映像 | YAML 工作流标签 | 说明 |
---|---|---|
Windows Server 2022 |
windows-latest 或 windows-2022
|
windows-latest 标签当前使用 Windows Server 2022 运行器映像。
|
Windows Server 2019 |
windows-2019
|
无 |
Ubuntu 22.04 |
ubuntu-latest 或 ubuntu-22.04
|
ubuntu-latest 标签当前使用 Ubuntu 22.04 运行器映像。
|
Ubuntu 20.04 |
ubuntu-20.04
|
无 |
Ubuntu 18.04 [已弃用] |
ubuntu-18.04
|
迁移到 ubuntu-20.04 或 ubuntu-22.04 。 有关详细信息,请参阅此 GitHub 博客文章。
|
macOS Monterey 12 |
macos-latest 、macos-12 、macos-latest-xl 或 macos-12-xl
|
macos-latest 和 macos-latest-xl 工作流标签目前使用 macOS 12 运行器映像。
|
macOS Big Sur 11 |
macos-11
|
无 |
macOS Catalina 10.15 [已弃用] |
macos-10.15
|
迁移到 macOS-11 或 macOS-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
定位运行器组,以便作业将在属于该组的任何运行器上执行。 若要进行更精细的控制,还可以将运行器组与标签组合在一起。
示例:使用组控制作业的运行位置
在此示例中,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