在运行程序上运行作业
定义运行程序类型后,可以更新工作流 YAML 文件,以便将作业发送到新创建的运行程序实例进行处理。可以使用运行程序组或标签来定义作业的运行位置。
注意:大型运行程序会自动分配一个与运行程序名称相对应的默认标签。不能向大型运行程序添加自定义标签,但可以使用默认标签或运行程序的组将作业发送到特定类型的运行程序。
只有所有者或管理员帐户才能查看运行程序设置。非管理员用户可以联系组织所有者,以了解启用了哪些运行程序。组织所有者可以创建新的运行程序和运行程序组,以及配置权限以指定哪些存储库可以访问运行程序组。有关详细信息,请参阅“管理大型运行程序”。
定义运行程序类型后,可以更新工作流 YAML 文件,以便将作业发送到新创建的运行程序实例进行处理。可以使用运行程序组或标签来定义作业的运行位置。
注意:大型运行程序会自动分配一个与运行程序名称相对应的默认标签。不能向大型运行程序添加自定义标签,但可以使用默认标签或运行程序的组将作业发送到特定类型的运行程序。
只有所有者或管理员帐户才能查看运行程序设置。非管理员用户可以联系组织所有者,以了解启用了哪些运行程序。组织所有者可以创建新的运行程序和运行程序组,以及配置权限以指定哪些存储库可以访问运行程序组。有关详细信息,请参阅“管理大型运行程序”。
定义运行程序类型后,可以更新工作流 YAML 文件,以便将作业发送到运行程序实例进行处理。要在 macOS 大型运行程序上运行作业,请更新工作流 YAML 文件中的 runs-on
键,以使用 macOS 运行程序的 GitHub 定义标签之一。有关详细信息,请参阅“可用的 macOS 大型运行程序”。
可用的 macOS 大型运行程序
使用下表中的标签在相应的 macOS 大型运行程序上运行工作流。
运行程序大小 | 架构 | 处理器 (CPU) | 内存 (RAM) | 存储 (SSD) | 工作流标签 |
---|---|---|---|---|---|
大型 | 英特尔 | 12 | 30 GB | 14 GB | macos-latest-large 、macos-12-large 、macos-13-large [最新]、macos-14-large [Beta] |
超大型 | arm64 (M1) | 6 (+ 8 GPU 硬件加速) | 14 GB | 14 GB | macos-latest-xlarge 、macos-13-xlarge [最新]、macos-14-xlarge [Beta] |
注意:对于 macOS 大型运行器,-latest
运行器标签使用 macOS 12 运行器映像。对于 macOS Xlarge,-latest
运行器标签使用 macOS 13 运行器映像
查看存储库的可用运行器
如果你对存储库拥有 repo: write
访问权限,则可以查看存储库可用的运行器列表。
-
在 GitHub.com 上,导航到存储库的主页。
-
在存储库名称下方,单击 操作.
-
在左侧边栏的“管理”部分下,单击 运行器.
-
查看存储库的可用运行器列表。
-
或者,要复制运行器的标签以便在工作流中使用,请单击 在运行器右侧,然后单击复制标签。
使用组来控制作业运行的位置
在此示例中,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
任何对启用了操作的存储库拥有写访问权限的人都可以找出该存储库中可用的运行器的标签。请参阅“在大型运行器上运行作业”。
使用标签来控制作业运行的位置
你可以使用 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
任何对启用了操作的存储库拥有写访问权限的人都可以找出该存储库中可用的运行器的标签。请参阅“在大型运行器上运行作业”。
在工作流中定位 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 中正在运行多少个作业)对作业进行限制。
如果您注意到针对大型运行器的作业延迟或未运行,则可能有几个因素导致这种情况。
- 并发设置:您可能已达到最大并发限制。如果您希望启用更多作业并行运行,则可以将自动缩放设置更新为更大的数字。有关更多信息,请参阅“管理大型运行器”。
- 存储库权限:确保已为大型运行器启用了适当的存储库权限。默认情况下,企业运行器在存储库级别不可用,必须由组织管理员手动启用。有关更多信息,请参阅“管理大型运行器”。
- 帐单信息:您必须在文件中提供有效的信用卡才能使用大型运行器。在向您的帐户添加信用卡后,最多可能需要 10 分钟才能启用大型运行器。有关更多信息,请参阅“添加或编辑付款方式”。
- 支出限制:GitHub Actions 支出限制必须设置为大于零的值。有关详细信息,请参阅“管理 GitHub Actions 的支出限制”。
- 合理使用政策:GitHub 有一项合理使用政策,该政策会根据多个因素(例如,您正在运行多少个作业或整个 GitHub Actions 中正在运行多少个作业)对作业进行限制。
由于 macOS arm64 不支持 Node 12,macOS 大型运行程序会自动使用 Node 16 来执行为 Node 12 编写的任何 JavaScript 操作。某些社区操作可能与 Node 16 不兼容。如果您使用需要不同 Node 版本的操作,您可能需要在运行时手动安装特定版本。
注意:ARM 驱动的运行程序目前处于测试阶段,可能会发生更改。