注: GitHub 托管的运行器目前在 GitHub Enterprise Server 上不受支持。 您可以在 GitHub 公共路线图 上查看有关未来支持计划的更多信息。
有关创建自定义和默认� �签的信息,请参阅“将� �签与自托管运行器一起使用。”
在工作流程中使用自托管的运行器
� �签允许您� �据其共同特征向特定类型的自托管运行器发送工作流程作业。 例如,如果您的作业需要特定的硬件组件或软件包。 您可以将一个自定义� �签分配给运行器,然后将您的作业配置为仅在带该� �签的运行器中执行。
要为工作指定自托管的运行器,请在工作流程文件中使用自托管运行器� �签配置 runs-on
。
所有自托管运行器都有 self-hosted
� �签。 仅使用此� �签将选择任何自托管运行器。 To select runners that meet certain criteria, such as operating system or architecture, we recommend providing an array of labels that begins with self-hosted
(this must be listed first) and then includes additional labels as needed. When you specify an array of labels, jobs will be queued on runners that have all the labels that you specify.
Although the self-hosted
label is not required, we strongly recommend specifying it when using self-hosted runners to ensure that your job does not unintentionally specify any current or future GitHub-hosted runners.
更多信息请参阅“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 先在仓库级别搜索运行器,然后在组织级别搜索运行器,然后在企业级别搜索运行器。
- 然后,将作业发送到第一个联机且空闲的匹配运行器。
- 如果所有匹配的联机运行器都处于忙碌状态,则作业将在匹配联机运行器数量最多的级别排队。
- 如果所有匹配的运行器都处于脱机状态,则作业将在匹配脱机运行器数量最多的级别排队。
- 如果在任何级别都没有匹配的运行器,则作业将失败。
- 如果作业排队的时间超过 24 小时,则作业将失败。