Skip to main content
我们经常发布文档更新,此页面的翻译可能仍在进行中。 有关最新信息,请访问英语文档

使用较大运行器

GitHub 提供具有更多 RAM 和 CPU 的较大运行器。

大型运行器 功能目前对使用 GitHub Team 或 GitHub Enterprise Cloud 计划的组织和企业为 beta 版本,可能会更改。 若要请求访问 beta 版本,请访问注册页

大型运行器 概述

除了 标准 GitHub 托管的运行器之外,GitHub 还在 GitHub Team 和 GitHub Enterprise Cloud 计划中为客户提供一系列具有更多 RAM 和 CPU 的 大型运行器。 这些运行器由 GitHub 托管,并预安装了运行器应用程序和其他工具。

为组织启用大型运行器时,将自动为你创建一个默认运行器组,其中包含四个预配置的大型运行器。

向组织添加 大型运行器 时,会通过精选的可用硬件规范和操作系统映像定义计算机类型。 GitHub 随后会创建此运行器的多个实例,这些实例可基于定义的自动缩放限制,纵向扩展和缩减以匹配组织的作业需求。

大型运行器 的计算机规格

大小 (vcpu)内存 (RAM)存储 (SSD)
4 核16 GB150 GB
8 核32 GB300 GB
16 核64 GB600 GB
32 个核心128 GB1200 GB
64 个核心256 GB2040 GB

大型运行器 的其他功能

与标准 GitHub 托管的运行器相比,大型运行器 还具有下列功能:

  • 对于 Ubuntu 运行器,将启用 Android SDK 工具的硬件加速。 这使得运行 Android 测试的速度更快,消耗的时间更少。 有关 Android 硬件加速的详细信息,请参阅 Android 开发人员文档

有关每个运行器操作系统包含的工具的完整列表,请参阅 GitHub Actions 运行器映像存储库。

大型运行器 体系结构概述

大型运行器 在组织级别进行管理,它们被安排为可以包含运行器的多个实例的各个组。 它们还可以在企业级别进行创建,并与层次结构中的组织共享。 创建组后,可向组添加运行器并更新工作流,将组名或分配给 大型运行器 的标签作为目标。 还可以控制允许哪些存储库将作业发送到组进行处理。 有关组的详细信息,请参阅“控制对较大运行器的访问”。

在下图中,使用自定义硬件和操作系统配置定义了名为 ubuntu-20.04-16core 的托管运行器类别。

显示由于运行器标签而被工作流使用的较大运行器的示意图。

  1. 此运行器的实例会自动创建并添加到名为 grp-ubuntu-20.04-16core 的组。
  2. 运行器已分配有标签 ubuntu-20.04-16core
  3. 工作流作业在其 runs-on 键中使用 ubuntu-20.04-16core 标签来指示执行作业所需的运行器类型。
  4. GitHub Actions 会检查运行器组,以查看是否授权存储库将作业发送到运行器。
  5. 作业在 ubuntu-20.04-16core 运行器的下一个可用实例上运行。

大型运行器 的自动缩放

大型运行器 可以配置为自动缩放以满足需求。 提交作业进行处理时,可以自动预配更多计算机以运行作业,直到达到预定义的最大限制。 每台计算机一次只处理一个作业,因此这些设置实际上确定可以并发运行的作业数。

在运行器部署过程中,可以配置“最大值”选项,这使你可以通过设置在此集中创建的最大并行计算机数来控制成本。 此处的较高值可帮助避免由于并行而阻止工作流。

大型运行器 的网络

默认情况下,大型运行器 会接收为每个作业运行而更改的动态 IP 地址。 (可选)GitHub Enterprise Cloud 客户可以将其 大型运行器 配置为从 GitHub 的 IP 地址池接收静态 IP 地址。 启用后,大型运行器 的实例会从对运行器唯一的范围接收地址,从而使你能够使用此范围配置防火墙允许列表。 对于在企业级别创建的大型运行器,最多可以使用 10 个静态 IP 地址范围。 此外,对于在组织级别为企业中的每个组织创建的大型运行器,最多可以使用 10 个静态 IP 地址范围。

注意:如果运行器未使用的时间超过 30 天,则其 IP 地址范围会自动移除,无法恢复。

大型运行器 的规划

创建运行器组

运行器组用于收集虚拟机集,并围绕它们创建安全边界。 随后可以确定允许哪些组织或存储库在这些计算机集上运行作业。 在 大型运行器 部署过程中,运行器可以添加到现有组,否则会加入默认组。 可以按照“控制对较大运行器的访问”中的步骤创建组。

了解计费

注意:大型运行器不使用包含的权利分钟数,并且针对公共存储库不是免费的。

与标准 GitHub 托管的运行器相比,大型运行器 的计费方式有所不同。 有关详细信息,请参阅“关于 GitHub Actions 的计费”。

将 大型运行器 添加到企业

可以将 大型运行器 添加到企业,在该企业中可以将它们分配给多个组织。 组织管理员随后可以控制哪些存储库可以使用运行器。 若要将 大型运行器 添加到企业,你必须是组织所有者。

可以从可用选项列表中选择操作系统和硬件配置。 通过自动缩放部署此运行器的新实例时,它们会使用此处定义的相同操作系统和硬件配置。

新运行器会自动分配给默认组,也可以在运行器创建过程中选择运行器必须加入的组。 此外,可以在注册运行器后修改运行器组成员身份。 有关详细信息,请参阅“控制对较大运行器的访问”。

  1. 在 GitHub.com 的右上角,单击你的个人资料照片,然后单击“你的企业”。 GitHub Enterprise Cloud 上个人资料照片下拉菜单中的“你的企业”

  2. 在企业列表中,单击您想要查看的企业。

  3. 在企业帐户边栏中,单击“ 策略”。 1. 在“ 策略”下,单击“操作”。 1. 单击“运行器”选项卡。 1. 单击“新建运行器”,然后单击“ 新建 GitHub 托管的运行器” 。

  4. 完成配置新运行器所需的详细信息:

    • 名称:输入新运行器的名称。 为了便于识别,这应指示其硬件和操作配置,例如 ubuntu-20.04-16core
    • 运行器映像:从可用选项中选择操作系统。 选择操作系统后,便能够选择特定版本。
    • 运行器大小:从可用选项下拉列表中选择硬件配置。
    • 自动缩放:选择可随时处于活动状态的最大运行器数。
    • 运行器组:选择运行器所属的组。 此组会托管运行器的多个实例,因为它们会纵向扩展和缩减以满足需求。
    • 网络:仅适用于 GitHub Enterprise Cloud:选择是否将静态 IP 地址范围分配给 大型运行器 的实例。 总共最多可以使用 10 个静态 IP 地址。
  5. 单击“创建运行器”。

  6. 若要允许组织访问 大型运行器,请指定可以使用它的组织列表。 有关详细信息,请参阅“管理对运行器的访问”。

将 大型运行器 添加到组织

可以将 大型运行器 添加到组织,其中的组织管理员可以控制哪些存储库可以使用它。

可以从可用选项列表中选择操作系统和硬件配置。 通过自动缩放部署此运行器的新实例时,它们会使用此处定义的相同操作系统和硬件配置。

新运行器会自动分配给默认组,也可以在运行器创建过程中选择运行器必须加入的组。 此外,可以在注册运行器后修改运行器组成员身份。 有关详细信息,请参阅“控制对较大运行器的访问”。

  1. 在 GitHub.com 上,导航到组织的主页。 1. 在组织名称下,单击 “设置”。 如果看不到“设置”选项卡,请选择 下拉菜单,然后单击“设置” 。

    组织的水平导航栏的屏幕截图。 “设置”选项卡以深橙色标出。 1. 在左侧边栏中,单击“操作”,然后单击“运行器”。 1. 单击“新建运行器”,然后单击“ 新建 GitHub 托管的运行器” 。

  2. 完成配置新运行器所需的详细信息:

    • 名称:输入新运行器的名称。 为了便于识别,这应指示其硬件和操作配置,例如 ubuntu-20.04-16core
    • 运行器映像:从可用选项中选择操作系统。 选择操作系统后,便能够选择特定版本。
    • 运行器大小:从可用选项下拉列表中选择硬件配置。
    • 自动缩放:选择可随时处于活动状态的最大运行器数。
    • 运行器组:选择运行器所属的组。 此组会托管运行器的多个实例,因为它们会纵向扩展和缩减以满足需求。
    • 网络:仅适用于 GitHub Enterprise Cloud:选择是否将静态 IP 地址范围分配给 大型运行器 的实例。 总共最多可以使用 10 个静态 IP 地址。
  3. 单击“创建运行器”。

  4. 若要允许存储库访问 大型运行器,请将它们添加到可以使用它的存储库列表中。 有关详细信息,请参阅“管理对运行器的访问”。

在运行器上运行作业

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

注意:添加 大型运行器 时,会自动为其分配对应于运行器名称及其操作系统的默认标签。 无法将自定义标签添加到 大型运行器,但可以使用默认标签或运行器的组将作业发送到特定类型的运行器。

只有所有者或管理员帐户可查看运行器设置。 非管理用户可联系组织管理员,了解启用了哪些运行器。 组织管理员可创建新的运行器和运行器组,并配置权限来指定哪些存储库可访问运行器组。

使用组来控制作业的运行位置

在此示例中,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 16 核运行器填充运行器组,这些运行器也分配有标签 ubuntu-20.04-16coreruns-on 键将作业发送至具有匹配标签的任何可用运行器:

name: learn-github-actions
on: [push]
jobs:
  check-bats-version:
    runs-on:
      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

使用组和组来控制作业的运行位置

组合组和标签时,运行器必须满足这两项要求才能运行作业。

在此示例中,名为 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@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v

对运行器组使用唯一名称

GitHub Actions 要求运行器组名称在组织级别必须唯一。 这意味着组织将无法再创建与企业中的运行器组同名的运行器组。 此外,用户将在与企业中的组共享相同名称的任何运行器组上看到警告横幅,建议重命名组织组。

为了避免混淆,如果组织和企业中存在重复的运行器组,工作流将失败。 若要解决此问题,可以重命名组织或企业中的某个运行器组,也可以更新工作流文件以向运行器组名称添加前缀:

  • org/organization/
  • ent/enterprise/

示例:使用前缀区分运行器组

例如,如果组织中有一个名为 my-group 的运行器组,企业中有另一个名为 my-group 的运行器组,则可以更新工作流文件以使用 org/my-groupent/my-group 来区分这两者。

使用 org/

runs-on:
  group: org/my-group
  labels: [ self-hosted, label-1 ]

使用 ent/

runs-on:
  group: ent/my-group
  labels: [ self-hosted, label-1 ]

管理对运行器的访问

注意:必须先为运行器组配置权限,然后工作流才能将作业发送到 大型运行器。 有关详细信息,请参阅下列各节。

运行器组用于控制哪些存储库可以在 大型运行器 上运行作业。 必须从管理层次结构的各个级别授予对组的访问权限,具体取决于定义 大型运行器 的位置:

  • 企业级别的运行器:配置运行器组以授予对所有所需组织的访问权限。 此外,对于每个组织,必须配置组以指定允许访问的存储库。
  • 组织级别的运行器:通过指定允许访问的存储库来配置运行器组。

例如,下图包含一个企业级别的名为 grp-ubuntu-20.04-16core 的运行器组。 在名为 octo-repo 的存储库可以使用该组中的运行器之前,必须先在企业级别配置该组以允许从 octo-org 组织进行访问。 然后必须在组织级别配置该组以允许从 octo-repo 进行访问。

显示企业级别的运行器组与组织之间以及组织与组织拥有的两个存储库之间的锁的示意图。

允许存储库访问运行器组

此过程演示如何在企业和组织级别配置组权限:

  1. 导航到运行器组所在的位置:

    • 在组织中:

      1. 导航到主页并单击 “设置”。
    • 如果使用的是企业级组:

      1. 在 GitHub.com 的右上角,单击你的个人资料照片,然后单击“你的企业”。 GitHub Enterprise Cloud 上个人资料照片下拉菜单中的“你的企业”

      2. 在企业列表中,单击您想要查看的企业。

  2. 导航到“运行器组”设置:

    • 在组织中:

      1. 在左侧边栏中,单击“操作”,然后单击“运行器组” 。
    • 如果使用的是企业级组:

      1. 在企业帐户边栏中,单击“ 策略”。 1. 在“ 策略”下,单击“操作”。 1. 单击“运行器组”选项卡。 1. 在组列表中,单击要配置的运行器组。
  • 对于企业中的运行器组:在“组织访问”下,修改可以访问运行器组的组织。
  • 对于组织中的运行器组:在“存储库访问”下,修改可以访问运行器组的存储库。

警告

如果使用固定 IP 范围,建议仅对专用存储库使用 大型运行器。 公共存储库的分支可能会通过创建在工作流中执行代码的拉取请求,在 大型运行器 上运行危险代码。

有关详细信息,请参阅“控制对较大运行器的访问”。