跳至主要内容

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

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

谁可以使用此功能?

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

平台导航

在您的运行器上运行作业

定义运行器类型后,您可以更新工作流 YAML 文件,将作业发送到新创建的运行器实例以进行处理。您可以使用运行器组或标签来定义作业的运行位置。

注意

更大规模的运行器会自动分配一个与运行器名称对应的默认标签。您无法向更大规模的运行器添加自定义标签,但可以使用默认标签或运行器的组将作业发送到特定类型的运行器。

只有所有者或管理员帐户才能查看运行器设置。非管理员用户可以联系组织所有者以了解哪些运行器已启用。您的组织所有者可以创建新的运行器和运行器组,以及配置权限以指定哪些存储库可以访问运行器组。有关更多信息,请参阅“管理更大规模的运行器”。

定义运行器类型后,您可以更新工作流 YAML 文件,将作业发送到新创建的运行器实例以进行处理。您可以使用运行器组或标签来定义作业的运行位置。

注意

更大规模的运行器会自动分配一个与运行器名称对应的默认标签。您无法向更大规模的运行器添加自定义标签,但可以使用默认标签或运行器的组将作业发送到特定类型的运行器。

只有所有者或管理员帐户才能查看运行器设置。非管理员用户可以联系组织所有者以了解哪些运行器已启用。您的组织所有者可以创建新的运行器和运行器组,以及配置权限以指定哪些存储库可以访问运行器组。有关更多信息,请参阅“管理更大规模的运行器”。

定义运行器类型后,您可以更新工作流 YAML 文件,将作业发送到运行器实例以进行处理。要在 macOS 更大规模运行器上运行作业,请更新工作流 YAML 文件中的 runs-on 键,以使用 GitHub 定义的 macOS 运行器之一的标签。有关更多信息,请参阅“可用的 macOS 更大规模运行器”。

可用的 macOS 更大规模运行器

使用下表中的标签在相应的 macOS 更大规模运行器上运行您的工作流。

运行器大小架构处理器 (CPU)内存 (RAM)存储 (SSD)工作流标签
Intel1230 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

任何对启用操作的存储库具有写入访问权限的人员都可以找到该存储库中可用运行器的标签。请参阅“在更大规模的运行器上运行作业”。

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

您可以通过使用语法 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 键组合了 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-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@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 分配虚拟机以执行作业之间的时间。利用规定的 YAML 工作流标签(例如 ubuntu-latest)的标准 GitHub 托管运行器始终处于“预热”状态。对于更大规模的运行器,预热机器可能无法在第一次请求时准备好获取作业,因为这些机器的池较小。因此,GitHub 可能需要创建一个新的虚拟机,这会增加分配时间的队列。运行器投入使用后,虚拟机将随时准备进行后续工作流运行,从而减少未来 24 小时内后续工作流运行的分配时间队列。

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

  • 并发设置:您可能已达到最大并发限制。如果您想启用更多作业并行运行,可以将自动扩展设置更新为更大的数字。有关更多信息,请参阅“管理更大规模的运行器”。
  • 存储库权限:确保为您的更大规模运行器启用了相应的存储库权限。默认情况下,企业运行器在存储库级别不可用,必须由组织管理员手动启用。有关更多信息,请参阅“管理更大规模的运行器”。
  • 计费信息:您必须在文件中拥有有效的信用卡才能使用更大规模的运行器。将信用卡添加到您的帐户后,可能需要最多 10 分钟才能启用更大规模运行器的使用。有关更多信息,请参阅“添加或编辑付款方式”。
  • 支出限额:您的 GitHub Actions 支出限额必须设置为大于零的值。有关更多信息,请参阅“管理 GitHub Actions 的支出限额”。
  • 合理使用政策:GitHub 有一项合理使用政策,该政策会根据多个因素(例如您正在运行的作业数量或整个 GitHub Actions 中正在运行的作业数量)开始限制作业。
  • 作业队列以分配时间:作业队列以分配时间是指作业请求与 GitHub 分配虚拟机以执行作业之间的时间。利用规定的 YAML 工作流标签(例如 ubuntu-latest)的标准 GitHub 托管运行器始终处于“预热”状态。对于更大规模的运行器,预热机器可能无法在第一次请求时准备好获取作业,因为这些机器的池较小。因此,GitHub 可能需要创建一个新的虚拟机,这会增加分配时间的队列。运行器投入使用后,虚拟机将随时准备进行后续工作流运行,从而减少未来 24 小时内后续工作流运行的分配时间队列。

由于 macOS arm64 不支持 Node 12,因此 macOS 更大规模运行器会自动使用 Node 16 来执行为 Node 12 编写的任何 JavaScript 操作。某些社区操作可能与 Node 16 不兼容。如果您使用需要不同 Node 版本的操作,则可能需要在运行时手动安装特定版本。

注意

支持 ARM 的运行器目前处于公开预览阶段,可能会发生变化。