我们经常发布文档更新,此页面的翻译可能仍在进行中。有关最新信息,请访问英文文档。如果此页面上的翻译有问题,请告诉我们

关于自托管运行器

您可以托管自己的运行器,并自定义用于在 GitHub Actions 工作流程中运行作业的环境。

注: GitHub 托管的运行器目前在 GitHub Enterprise Server 上不受支持。 您可以在 GitHub 公共路线图 上查看有关未来支持计划的更多信息。

关于自托管运行器

自托管运行程序比 GitHub 托管的运行程序提供更多的硬件、操作系统和软件工具控制。 使用自托管的运行器,您可以选择创建具有更大处理功能或内存的自定义硬件配置,以运行更大的作业,安装在本地网络上可用的软件,并选择 GitHub 托管的运行器未提供的操作系统。 自托管的运行器可以是物理、虚拟,在容器中,也可以在本地或云端。

您可以在管理层次结构的各个层级添加自托管运行器:

  • 仓库级运行器专用于单个仓库。
  • 组织级运行器可以处理组织中多个仓库的作业。
  • 企业级运行器可以分配到企业帐户中的多个组织。

运行器机器使用 GitHub Actions 自托管运行器应用程序连接到 GitHub Enterprise Server。 GitHub Actions 运行器应用程序是开源的。 您可以参与 runner 仓库并在其中提交议题。 当发布新版本时,运行器应用程序在作业分配到运行器时或发布后一周内(如果运行器没有被分配任何作业)会自动更新。

自托管运行器与 GitHub Actions 未连接超过 30 天,将被自动从 GitHub Enterprise Server 中删除。

有关安装和使用自托管运行器的更多信息,请参阅“添加自托管运行器”和“在工作流程中使用自托管运行器”。

GitHub 托管的运行器与自托管运行器之间的差异

GitHub 托管的运行器提供了一个更快、更简单的工作流程运行方式,而自托管运行器是您的自定义环境中高度可配置的工作流程运行方式。

GitHub 托管的运行器:

  • 接收操作系统、预安装的软件包和工具以及自托管运行器程序应用程序的自动更新。
  • 被 GitHub 管理和维护。
  • 为每个作业执行提供一个干净的实例。
  • 使用 GitHub 计划设定的免费分钟数,超过免费分钟数后按分钟收费。

自托管运行器:

  • 仅接收自托管运行器应用程序的自动更新。 您负责更新操作系统和所有其他软件。
  • 可使用已付费的云服务或本地计算机。
  • 可根据您的硬件、操作系统、软件和安全要求进行自定义。
  • 无需为每个作业执行提供一个干净的实例。
  • 可免费使用 GitHub Actions,但是您对运行器维护费用负责。

自托管运行器机器的要求

只要符合以下要求,便可将任何计算机用作自托管运行器:

  • 您可以在机器上安装和运行自托管运行器应用程序。 更多信息请参阅“自托管运行器支持的架构和操作系统”。
  • 计算机可与 GitHub Actions 通信。 更多信息请参阅“自托管运行器与 GitHub 之间的通信”。
  • 机器有足够的硬件资源来执行您计划运行的工作流程类型。 自托管运行器应用程序本身只需要很少的资源。
  • 如果您想运行使用 Docker 容器操作或服务容器的工作流程,您必须使用 Linux 机器并安装 Docker。

使用限制

在使用自托管的运行器时,对 GitHub Actions 的使用有一些限制。 这些限制可能会有变动。

  • 工作流程运行时间 - 每个工作流程的运行时限为 72 小时。 如果工作流程运行时间达到此限制,其运行将被取消。
  • 作业排队时间 - 自托管运行器的每个作业最多可排队 24 小时。 如果自托管运行器在此限制内没有开始执行作业,则作业将被终止,并且无法完成。
  • API 请求 - 在一个仓库的所有操作中,一个小时内最多可执行 1000 个 API 请求。 如果超出,额外的 API 调用将失败,这可能导致作业失败。
  • 作业矩阵 - 作业矩阵在每次工作流程运行时最多可生成 256 个作业。 此限制也适用于自托管运行器。
  • 工作流程运行队列 - 每个仓库在 10 秒的间隔内可排队的工作流程运行不超过 100 个。 如果工作流程运行达到此限制,该工作流程运行将会终止而无法完成。

自托管运行器的工作流连续性

如果 GitHub Actions 服务暂时不可用,则在触发后 30 分钟内没有排队时,运行的工作流程运行将被丢弃。 例如,如果触发了一个工作流程,而 GitHub Actions 服务在 31 分钟或更长时间内不可用,则该工作流程将不会被处理。

自托管运行器支持的架构和操作系统

自托管运行器应用程序支持以下操作系统。

Linux

  • Red Hat Enterprise Linux 7 或更新版本
  • CentOS 7 或更新版本
  • Oracle Linux 7
  • Fedora 29 或更高版本
  • Debian 9 或更高版本
  • Ubuntu 16.04 或更高版本
  • Linux Mint 18 或更高版本
  • openSUSE 15 或更高版本
  • SUSE Enterprise Linux (SLES) 12 SP2 或更高版本

Windows

  • Windows 7 64 位
  • Windows 8.1 64 位
  • Windows 10 64 位
  • Windows Server 2012 R2 64 位
  • Windows Server 2016 64 位
  • Windows Server 2019 64 位

macOS

  • macOS 10.13 (High Sierra) 或更高版本

架构

自托管运行器应用程序支持以下处理器架构。

  • x64 - Linux、macOS、Windows。
  • ARM64 - 仅 Linux。
  • ARM32 - 仅 Linux。

自托管运行器与 GitHub 之间的通信

计算机可与 GitHub Actions 通信。 更多信息请参阅“自托管运行器与 GitHub 之间的通信”。

自托管运行器与 GitHub Enterprise Server 之间的通信

自托管运行器将调查 GitHub Enterprise Server 以检索应用程序更新,并检查是否有作业在排队等待处理。 自托管运行器使用 HTTPS long poll 打开 GitHub Enterprise Server 连接 50 秒,如果没有收到任何响应,就会暂停并创建新的长轮询。 应用程序必须在机器上运行才能接受和运行 GitHub Actions 作业。

您必须确保机器具有适当的网络访问权限才可与 您的 GitHub Enterprise Server 实例 通信。

您也可以通过代理服务器使用自托管的运行器。 更多信息请参阅“将代理服务器与自托管运行器一起使用”。

使用公共仓库的自托管运行器安全性

建议仅将自托管运行器用于私有仓库。 这是因为,通过创建在工作流程中执行代码的拉取请求,仓库的复刻可能会在您的自托管运行器上运行危险代码。

这对 GitHub 托管的运行器不是问题,因为每个 GitHub 托管的运行器始终是一个干净的独立虚拟机, 在作业执行结束时被销毁。

在自托管运行器上运行不受信任的工作流程会给您的机器和网络环境带来严重的安全风险,特别是机器在同一环境下执行不同的作业时。 其中一些风险包括:

  • 机器上运行的恶意程序。
  • 逃避机器的运行器沙盒。
  • 显示对机器网络环境的访问权限。
  • 在机器上保持不需要或危险的数据。

此文档对您有帮助吗? 隐私政策

帮助我们创建出色的文档!

所有 GitHub 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或, 了解如何参与。