注:GitHub Enterprise Server 2.22 上的 GitHub Actions 支持是有限的公测版。 测试已结束。 GitHub Actions 现在一般可用于 GitHub Enterprise Server 3.0 或更新版本。 更多信息请参阅 GitHub Enterprise Server 3.0 发行说明。
- 有关升级到 GitHub Enterprise Server 3.0 或更新版本的更多信息,请参阅“升级 GitHub Enterprise Server”。
- 有关在升级后配置 GitHub Actions 的更多信息,请参阅 GitHub Enterprise Server 3.0 的文档。
注: GitHub 托管的运行器目前在 GitHub Enterprise Server 上不受支持。 您可以在 GitHub 公共路线图 上查看有关未来支持计划的更多信息。
有关创建自定义和默认标签的信息,请参阅“将标签与自托管运行器一起使用。”
在工作流程中使用自托管的运行器
标签允许您根据其共同特征向特定类型的自托管运行器发送工作流程作业。 例如,如果您的作业需要特定的硬件组件或软件包。 您可以将一个自定义标签分配给运行器,然后将您的作业配置为仅在带该标签的运行器中执行。
要为工作指定自托管的运行器,请在工作流程文件中使用自托管运行器标签配置 runs-on
。
All self-hosted runners have the self-hosted
label. Using only this label will select any self-hosted runner. To select runners that meet certain criteria, such as operating system or architecture, provide an array of labels that begins with self-hosted
(this must be listed first) and then includes additional labels as needed.
更多信息请参阅“GitHub Actions 的工作流程语法”。
使用默认标签路由作业
在被添加到 GitHub Actions 后,自托管运行器将自动收到某些标签。 这些被用于指出其操作系统和硬件平台:
self-hosted
:应用到所有自托管运行器的默认标签。linux
、windows
或macOS
:根据操作系统应用。x64
、ARM
或ARM64
:根据硬件架构应用。
您可以使用您工作流程的 YAML 将作业发送到这些标签的组合。 在此示例中,与所有三个标签匹配的自托管运行器将有资格运行该作业:
runs-on: [self-hosted, linux, ARM64]
self-hosted
- 在自托管运行器上运行此作业。linux
- 仅使用基于 Linux 的运行器。ARM64
- 仅使用基于 ARM64 硬件的运行器。
默认标签是固定的,无法更改或删除。 如果您需要对作业路由的更多控制,考虑使用自定义标签。
使用自定义标签路由作业
您可以随时创建自定义标签并将其分配给您的自托管运行器。 自定义标签允许您根据其标注将作业发送给特定的自托管运行器类型。
例如,如果您的某个作业需要特定类型的图形硬件,则可以创建名为 gpu
的自定义标签,并将其分配给安装了该硬件的运行器。 然后,与所有已分配的标签匹配的自托管运行器将有资格运行该作业。
此示例显示组合默认标签和自定义标签的作业:
runs-on: [self-hosted, linux, x64, gpu]
self-hosted
- 在自托管运行器上运行此作业。linux
- 仅使用基于 Linux 的运行器。x64
- 仅使用基于 x64 硬件的运行器。gpu
- 此自定义标签已被手动分配给安装了 GPU 硬件的自托管运行器。
这些标签累计运行,所以自托管运行器的标签必须匹配所有四个标签才能处理该作业。
自托管运行器的路由优先级
将作业路由到自托管运行器时,GitHub 将查找与作业的 runs-on
标签匹配的运行器:
- GitHub first searches for a runner at the repository level, then at the organization level, then at the enterprise level.
- 然后,将作业发送到第一个联机且空闲的匹配运行器。
- 如果所有匹配的联机运行器都处于忙碌状态,则作业将在匹配联机运行器数量最多的级别排队。
- 如果所有匹配的运行器都处于脱机状态,则作业将在匹配脱机运行器数量最多的级别排队。
- 如果在任何级别都没有匹配的运行器,则作业将失败。
- 如果作业排队的时间超过 24 小时,则作业将失败。