在您的 Runner 上运行作业
定义 Runner 类型后,您可以更新工作流 YAML 文件以将作业发送到新创建的 Runner 实例进行处理。您可以使用 Runner 组或标签来定义作业的运行位置。
注意
更大规模的 Runner 会自动分配一个与 Runner 名称对应的默认标签。您无法为更大规模的 Runner 添加自定义标签,但可以使用默认标签或 Runner 的组将作业发送到特定类型的 Runner。
只有拥有者或管理员帐户才能查看运行器设置。非管理员用户可以联系组织拥有者以了解哪些运行器已启用。您的组织拥有者可以创建新的运行器和运行器组,以及配置权限以指定哪些存储库可以访问运行器组。有关更多信息,请参阅“管理大型运行器”。
定义 Runner 类型后,您可以更新工作流 YAML 文件以将作业发送到新创建的 Runner 实例进行处理。您可以使用 Runner 组或标签来定义作业的运行位置。
注意
更大规模的 Runner 会自动分配一个与 Runner 名称对应的默认标签。您无法为更大规模的 Runner 添加自定义标签,但可以使用默认标签或 Runner 的组将作业发送到特定类型的 Runner。
只有拥有者或管理员帐户才能查看运行器设置。非管理员用户可以联系组织拥有者以了解哪些运行器已启用。您的组织拥有者可以创建新的运行器和运行器组,以及配置权限以指定哪些存储库可以访问运行器组。有关更多信息,请参阅“管理大型运行器”。
定义运行器类型后,您可以更新工作流 YAML 文件以将作业发送到运行器实例进行处理。要在 macOS 大型运行器上运行作业,请更新工作流 YAML 文件中的runs-on
键以使用 GitHub 定义的 macOS 运行器标签之一。有关更多信息,请参阅“可用的 macOS 大型运行器”。
可用的 macOS 大型运行器
使用下表中的标签在相应的 macOS 大型运行器上运行您的工作流。
运行器大小 | 架构 | 处理器 (CPU) | 内存 (RAM) | 存储 (SSD) | 工作流标签 |
---|---|---|---|---|---|
大型 | 英特尔 | 12 | 30 GB | 14 GB | macos-latest-large 、macos-12-large 、macos-13-large 、macos-14-large [最新]、macos-15-large [公开预览] |
超大型 | arm64 (M1) | 6 (+ 8 GPU 硬件加速) | 14 GB | 14 GB | macos-latest-xlarge 、macos-13-xlarge 、macos-14-xlarge [最新]、macos-15-xlarge [公开预览] |
注意
对于 macOS 大型运行器,-latest
运行器标签使用 macOS 12 运行器镜像。对于 macOS 超大型,-latest
运行器标签使用 macOS 13 运行器镜像
查看存储库可用的运行器
如果您对存储库具有repo: write
访问权限,则可以查看存储库可用的运行器列表。
-
在 GitHub 上,导航到存储库的主页。
-
在您的存储库名称下,单击 操作.
-
在左侧边栏的“管理”部分下,单击 运行器.
-
查看存储库可用的运行器列表。
-
可选地,要复制运行器的标签以在工作流中使用它,请单击在运行器的右侧,然后单击“复制标签”。
使用组控制作业运行位置
在此示例中,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 运行器已添加到名为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
使用标签控制作业运行位置
您可以通过使用语法runs-on: LABEL
隐式地将标签传递给runs-on
键。或者,您可以使用labels
键,如下例所示。
在此示例中,runs-on
键将作业发送到已分配ubuntu-20.04-16core
标签的任何可用运行器
name: learn-github-actions
on: [push]
jobs:
check-bats-version:
runs-on:
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
任何对已启用 Actions 的存储库具有写入权限的人员都可以找出该存储库中可用运行器的标签。请参阅“在大型运行器上运行作业”。
使用标签控制作业运行位置
您可以通过使用语法runs-on: LABEL
隐式地将标签传递给runs-on
键。或者,您可以使用labels
键,如下例所示。
在此示例中,runs-on
键将作业发送到已分配windows-2022-16core
标签的任何可用运行器
name: learn-github-actions
on: [push]
jobs:
check-bats-version:
runs-on:
labels: windows-2022-16core
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '14'
- run: npm install -g bats
- run: bats -v
任何对已启用 Actions 的存储库具有写入权限的人员都可以找出该存储库中可用运行器的标签。请参阅“在大型运行器上运行作业”。
在工作流中定位 macOS 大型运行器
要在 macOS 大型运行器上运行您的工作流,请将runs-on
键的值设置为与 macOS 大型运行器关联的标签。有关 macOS 大型运行器标签的列表,请参阅“可用的 macOS 大型运行器”。
在此示例中,工作流使用与 macOS XL 运行器关联的标签。runs-on
键将作业发送到任何具有匹配标签的可用运行器
name: learn-github-actions-testing
on: [push]
jobs:
build:
runs-on: macos-13-xlarge
steps:
- uses: actions/checkout@v4
- name: Build
run: swift build
- name: Run tests
run: swift test
使用标签和组控制作业运行位置
当您组合组和标签时,运行器必须满足这两个要求才能有资格运行作业。
在此示例中,名为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@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
键组合了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@v4
- uses: actions/setup-node@v4
with:
node-version: '14'
- run: npm install -g bats
- run: bats -v
大型运行器故障排除
如果您注意到目标为大型运行器的作业延迟或未运行,则可能有多个因素导致这种情况。
- 并发设置:您可能已达到最大并发限制。如果您希望启用更多作业并行运行,可以将自动缩放设置更新为更大的数字。有关更多信息,请参阅“管理大型运行器”。
- 存储库权限:确保您已为大型运行器启用了相应的存储库权限。默认情况下,企业运行器在存储库级别不可用,必须由组织管理员手动启用。有关更多信息,请参阅“管理大型运行器”。
- 计费信息:您必须在文件中有一张有效的信用卡才能使用大型运行器。将信用卡添加到您的帐户后,启用大型运行器可能需要长达 10 分钟的时间。有关更多信息,请参阅“添加或编辑付款方式”。
- 支出限额:您的 GitHub Actions 支出限额必须设置为大于零的值。有关更多信息,请参阅“管理 GitHub Actions 的支出限额”。
- 合理使用政策:GitHub 有一项合理使用政策,该政策会根据多个因素(例如您正在运行的作业数量或整个 GitHub Actions 中正在运行的作业数量)开始限制作业。
- 作业队列分配时间:作业队列分配时间是指作业请求与 GitHub 分配 VM 以执行作业之间的时间。利用规定的 YAML 工作流标签(如
ubuntu-latest
)的标准 GitHub 托管运行器始终处于“预热”状态。对于大型运行器,预热机器可能无法在第一次请求时准备好获取作业,因为这些机器的池较小。因此,GitHub 可能需要创建一个新的 VM,这会增加分配时间队列。一旦运行器投入使用,VM 就会随时准备进行后续工作流运行,从而减少未来 24 小时内后续工作流运行的分配时间队列。
如果您注意到目标为大型运行器的作业延迟或未运行,则可能有多个因素导致这种情况。
- 并发设置:您可能已达到最大并发限制。如果您希望启用更多作业并行运行,可以将自动缩放设置更新为更大的数字。有关更多信息,请参阅“管理大型运行器”。
- 存储库权限:确保您已为大型运行器启用了相应的存储库权限。默认情况下,企业运行器在存储库级别不可用,必须由组织管理员手动启用。有关更多信息,请参阅“管理大型运行器”。
- 计费信息:您必须在文件中有一张有效的信用卡才能使用大型运行器。将信用卡添加到您的帐户后,启用大型运行器可能需要长达 10 分钟的时间。有关更多信息,请参阅“添加或编辑付款方式”。
- 支出限额:您的 GitHub Actions 支出限额必须设置为大于零的值。有关更多信息,请参阅“管理 GitHub Actions 的支出限额”。
- 合理使用政策:GitHub 有一项合理使用政策,该政策会根据多个因素(例如您正在运行的作业数量或整个 GitHub Actions 中正在运行的作业数量)开始限制作业。
- 作业队列分配时间:作业队列分配时间是指作业请求与 GitHub 分配 VM 以执行作业之间的时间。利用规定的 YAML 工作流标签(如
ubuntu-latest
)的标准 GitHub 托管运行器始终处于“预热”状态。对于大型运行器,预热机器可能无法在第一次请求时准备好获取作业,因为这些机器的池较小。因此,GitHub 可能需要创建一个新的 VM,这会增加分配时间队列。一旦运行器投入使用,VM 就会随时准备进行后续工作流运行,从而减少未来 24 小时内后续工作流运行的分配时间队列。
由于 macOS arm64 不支持 Node 12,因此 macOS 大型运行器会自动使用 Node 16 来执行为 Node 12 编写的任何 JavaScript 操作。某些社区操作可能与 Node 16 不兼容。如果您使用需要不同 Node 版本的操作,则可能需要在运行时手动安装特定版本。
注意
基于 ARM 的运行器目前处于公开预览阶段,可能会发生变化。