跳至主要内容

在更大规模的 Runner 上运行作业

您可以通过将工作流配置为在更大规模的 Runner 上运行来加快工作流速度。

谁可以使用此功能?

更大规模的 Runner 仅适用于使用 GitHub Team 或 GitHub Enterprise Cloud 计划的组织和企业。

平台导航

在您的 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)工作流标签
大型英特尔1230 GB14 GBmacos-latest-largemacos-12-largemacos-13-largemacos-14-large [最新]、macos-15-large [公开预览]
超大型arm64 (M1)6 (+ 8 GPU 硬件加速)14 GB14 GBmacos-latest-xlargemacos-13-xlargemacos-14-xlarge [最新]、macos-15-xlarge [公开预览]

注意

对于 macOS 大型运行器,-latest 运行器标签使用 macOS 12 运行器镜像。对于 macOS 超大型,-latest 运行器标签使用 macOS 13 运行器镜像

查看存储库可用的运行器

如果您对存储库具有repo: write访问权限,则可以查看存储库可用的运行器列表。

  1. 在 GitHub 上,导航到存储库的主页。

  2. 在您的存储库名称下,单击 操作.

    Screenshot of the tabs for the "github/docs" repository. The "Actions" tab is highlighted with an orange outline.

  3. 在左侧边栏的“管理”部分下,单击 运行器.

  4. 查看存储库可用的运行器列表。

  5. 可选地,要复制运行器的标签以在工作流中使用它,请单击在运行器的右侧,然后单击“复制标签”。

注意

企业和组织拥有者可以从此页面创建运行器。要创建新的运行器,请单击运行器列表右上方的“新建运行器”以将运行器添加到存储库。

有关更多信息,请参阅“管理大型运行器”和“添加自托管运行器”。

使用组控制作业运行位置

在此示例中,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-16coreruns-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

使用标签和组控制作业运行位置

当您组合组和标签时,运行器必须满足这两个要求才能有资格运行作业。

在此示例中,名为ubuntu-runners的运行器组填充了 Ubuntu 运行器,这些运行器也已分配了标签ubuntu-20.04-16coreruns-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

大型运行器故障排除

如果您注意到目标为大型运行器的作业延迟或未运行,则可能有多个因素导致这种情况。

  • 并发设置:您可能已达到最大并发限制。如果您希望启用更多作业并行运行,可以将自动缩放设置更新为更大的数字。有关更多信息,请参阅“管理大型运行器”。
  • 存储库权限:确保您已为大型运行器启用了相应的存储库权限。默认情况下,企业运行器在存储库级别不可用,必须由组织管理员手动启用。有关更多信息,请参阅“管理大型运行器”。
  • 计费信息:您必须在文件中有一张有效的信用卡才能使用大型运行器。将信用卡添加到您的帐户后,启用大型运行器可能需要长达 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 的运行器目前处于公开预览阶段,可能会发生变化。