大型运行器 概述
除了 标准 GitHub 托管的运行器之外,GitHub 还在 GitHub Team 和 GitHub Enterprise Cloud 计划中为客户提供一系列具有更多 RAM 和 CPU 的 大型运行器。 这些运行器由 GitHub 托管,并预安装了运行器应用程序和其他工具。
为组织启用大型运行器时,将自动为你创建一个默认运行器组,其中包含四个预配置的大型运行器。
向组织添加 大型运行器 时,会通过精选的可用硬件规范和操作系统映像定义计算机类型。 GitHub 随后会创建此运行器的多个实例,这些实例可基于定义的自动缩放限制,纵向扩展和缩减以匹配组织的作业需求。
大型运行器 的计算机规格
大小 (vcpu) | 内存 (RAM) | 存储 (SSD) |
---|---|---|
4 核 | 16 GB | 150 GB |
8 核 | 32 GB | 300 GB |
16 核 | 64 GB | 600 GB |
32 个核心 | 128 GB | 1200 GB |
64 个核心 | 256 GB | 2040 GB |
大型运行器 的其他功能
与标准 GitHub 托管的运行器相比,大型运行器 还具有下列功能:
- 对于 Ubuntu 运行器,将启用 Android SDK 工具的硬件加速。 这使得运行 Android 测试的速度更快,消耗的时间更少。 有关 Android 硬件加速的详细信息,请参阅 Android 开发人员文档。
有关每个运行器操作系统包含的工具的完整列表,请参阅 GitHub Actions 运行器映像存储库。
大型运行器 体系结构概述
大型运行器 在组织级别进行管理,它们被安排为可以包含运行器的多个实例的各个组。 它们还可以在企业级别进行创建,并与层次结构中的组织共享。 创建组后,可向组添加运行器并更新工作流,将组名或分配给 大型运行器 的标签作为目标。 还可以控制允许哪些存储库将作业发送到组进行处理。 有关组的详细信息,请参阅“控制对较大运行器的访问”。
在下图中,使用自定义硬件和操作系统配置定义了名为 ubuntu-20.04-16core
的托管运行器类别。
- 此运行器的实例会自动创建并添加到名为
grp-ubuntu-20.04-16core
的组。 - 运行器已分配有标签
ubuntu-20.04-16core
。 - 工作流作业在其
runs-on
键中使用ubuntu-20.04-16core
标签来指示执行作业所需的运行器类型。 - GitHub Actions 会检查运行器组,以查看是否授权存储库将作业发送到运行器。
- 作业在
ubuntu-20.04-16core
运行器的下一个可用实例上运行。
大型运行器 的自动缩放
大型运行器 可以配置为自动缩放以满足需求。 提交作业进行处理时,可以自动预配更多计算机以运行作业,直到达到预定义的最大限制。 每台计算机一次只处理一个作业,因此这些设置实际上确定可以并发运行的作业数。
在运行器部署过程中,可以配置“最大值”选项,这使你可以通过设置在此集中创建的最大并行计算机数来控制成本。 此处的较高值可帮助避免由于并行而阻止工作流。
大型运行器 的网络
默认情况下,大型运行器 会接收为每个作业运行而更改的动态 IP 地址。 (可选)GitHub Enterprise Cloud 客户可以将其 大型运行器 配置为从 GitHub 的 IP 地址池接收静态 IP 地址。 启用后,大型运行器 的实例会从对运行器唯一的范围接收地址,从而使你能够使用此范围配置防火墙允许列表。 在你所有的大型运行器中,最多可以使用 10 个静态 IP 地址范围。
注意:如果运行器未使用的时间超过 30 天,则其 IP 地址范围会自动移除,无法恢复。
大型运行器 的规划
创建运行器组
运行器组用于收集虚拟机集,并围绕它们创建安全边界。 随后可以确定允许哪些组织或存储库在这些计算机集上运行作业。 在 大型运行器 部署过程中,运行器可以添加到现有组,否则会加入默认组。 可以按照“控制对较大运行器的访问”中的步骤创建组。
了解计费
注意:大型运行器不使用包含的权利分钟数,并且针对公共存储库不是免费的。
与标准 GitHub 托管的运行器相比,大型运行器 的计费方式有所不同。 有关详细信息,请参阅“关于 GitHub Actions 的计费”。
将 大型运行器 添加到企业
可以将 大型运行器 添加到企业,在该企业中可以将它们分配给多个组织。 组织管理员随后可以控制哪些存储库可以使用运行器。 若要将 大型运行器 添加到企业,你必须是组织所有者。
可以从可用选项列表中选择操作系统和硬件配置。 通过自动缩放部署此运行器的新实例时,它们会使用此处定义的相同操作系统和硬件配置。
新运行器会自动分配给默认组,也可以在运行器创建过程中选择运行器必须加入的组。 此外,可以在注册运行器后修改运行器组成员身份。 有关详细信息,请参阅“控制对较大运行器的访问”。
-
在企业帐户边栏中,单击“ 策略”。
-
在“ 策略”下,单击“操作”。
-
单击“运行器”选项卡。
-
单击“新建运行器”,然后单击“ 新建 GitHub 托管的运行器” 。
-
完成配置新运行器所需的详细信息:
- 名称:输入新运行器的名称。 为了便于识别,这应指示其硬件和操作配置,例如
ubuntu-20.04-16core
。 - 运行器映像:从可用选项中选择操作系统。 选择操作系统后,便能够选择特定版本。
- 运行器大小:从可用选项下拉列表中选择硬件配置。
- 自动缩放:选择可随时处于活动状态的最大运行器数。
- 运行器组:选择运行器所属的组。 此组会托管运行器的多个实例,因为它们会纵向扩展和缩减以满足需求。
- 网络:仅适用于 GitHub Enterprise Cloud:选择是否将静态 IP 地址范围分配给 大型运行器 的实例。 总共最多可以使用 10 个静态 IP 地址。
- 名称:输入新运行器的名称。 为了便于识别,这应指示其硬件和操作配置,例如
-
单击“创建运行器”。
-
若要允许组织访问 大型运行器,请指定可以使用它的组织列表。 有关详细信息,请参阅“管理对运行器的访问”。
将 大型运行器 添加到组织
可以将 大型运行器 添加到组织,其中的组织管理员可以控制哪些存储库可以使用它。
可以从可用选项列表中选择操作系统和硬件配置。 通过自动缩放部署此运行器的新实例时,它们会使用此处定义的相同操作系统和硬件配置。
新运行器会自动分配给默认组,也可以在运行器创建过程中选择运行器必须加入的组。 此外,可以在注册运行器后修改运行器组成员身份。 有关详细信息,请参阅“控制对较大运行器的访问”。
-
在 GitHub.com 上,导航到组织的主页。
-
在组织名称下,单击 “设置”。 如果看不到“设置”选项卡,请选择 下拉菜单,然后单击“设置” 。
-
在左侧边栏中,单击“操作”,然后单击“运行器”。
-
单击“新建运行器”,然后单击“ 新建 GitHub 托管的运行器” 。
-
完成配置新运行器所需的详细信息:
- 名称:输入新运行器的名称。 为了便于识别,这应指示其硬件和操作配置,例如
ubuntu-20.04-16core
。 - 运行器映像:从可用选项中选择操作系统。 选择操作系统后,便能够选择特定版本。
- 运行器大小:从可用选项下拉列表中选择硬件配置。
- 自动缩放:选择可随时处于活动状态的最大运行器数。
- 运行器组:选择运行器所属的组。 此组会托管运行器的多个实例,因为它们会纵向扩展和缩减以满足需求。
- 网络:仅适用于 GitHub Enterprise Cloud:选择是否将静态 IP 地址范围分配给 大型运行器 的实例。 总共最多可以使用 10 个静态 IP 地址。
- 名称:输入新运行器的名称。 为了便于识别,这应指示其硬件和操作配置,例如
-
单击“创建运行器”。
-
若要允许存储库访问 大型运行器,请将它们添加到可以使用它的存储库列表中。 有关详细信息,请参阅“管理对运行器的访问”。
在运行器上运行作业
定义了运行器类型后,可以更新工作流 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-16core
。 runs-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
键将 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@v3
- uses: actions/setup-node@v3
with:
node-version: '14'
- run: npm install -g bats
- run: bats -v
管理对运行器的访问
注意:必须先为运行器组配置权限,然后工作流才能将作业发送到 大型运行器。 有关详细信息,请参阅下列各节。
运行器组用于控制哪些存储库可以在 大型运行器 上运行作业。 必须从管理层次结构的各个级别授予对组的访问权限,具体取决于定义 大型运行器 的位置:
- 企业级别的运行器:配置运行器组以授予对所有所需组织的访问权限。 此外,对于每个组织,必须配置组以指定允许访问的存储库。
- 组织级别的运行器:通过指定允许访问的存储库来配置运行器组。
例如,下图包含一个企业级别的名为 grp-ubuntu-20.04-16core
的运行器组。 在名为 octo-repo
的存储库可以使用该组中的运行器之前,必须先在企业级别配置该组以允许从 octo-org
组织进行访问。 然后必须在组织级别配置该组以允许从 octo-repo
进行访问。
允许存储库访问运行器组
此过程演示如何在企业和组织级别配置组权限:
- 导航到运行器组所在的存储库或组织的主页。
- 单击“设置”。
- 在左侧边栏中,单击“操作”,然后单击“运行器组” 。
- 在组列表中,单击要配置的运行器组。
- 对于企业中的运行器组:在“组织访问”下,修改可以访问运行器组的组织。
- 对于组织中的运行器组:在“存储库访问”下,修改可以访问运行器组的存储库。
警告:
如果使用固定 IP 范围,建议仅对专用存储库使用 大型运行器。 公共存储库的分支可能会通过创建在工作流中执行代码的拉取请求,在 大型运行器 上运行危险代码。
有关详细信息,请参阅“控制对较大运行器的访问”。