关于自托管运行器
自托管运行程序比 GitHub 托管的运行程序提供更多的硬件、操作系统和软件工具控制。 使用自托管的运行器,您可以选择创建具有更大处理功能或内存的自定义硬件配置,以运行更大的作业,安装在本地网络上可用的软件,并选择 GitHub 托管的运行器未提供的操作系统。 自托管的运行器可以是物理、虚拟,在容器中,也可以在本地或云端。
您可以在管理层次结构的各个层级添加自托管运行器:
- 仓库级运行器专用于单个仓库。
- 组织级运行器可以处理组织中多个仓库的作业。
- 企业级运行器可以分配到企业帐户中的多个组织。
运行器机器使用 GitHub Actions 自托管运行器应用程序连接到 GitHub。 GitHub Actions 运行器应用程序是开源的。 您可以参与 runner 仓库并在其中提交议题。 当发布新版本时,运行器应用程序在作业分配到运行器时或发布后一周内(如果运行器没有被分配任何作业)会自动更新。
自托管运行器与 GitHub Actions 未连接超过 30 天,将被自动从 GitHub 中删除。
有关安装和使用自托管运行器的更多信息,请参阅“添加自托管运行器”和“在工作流程中使用自托管运行器”。
GitHub 托管的运行器与自托管运行器之间的差异
GitHub 托管的运行器提供了一个更快、更简单的工作流程运行方式,而自托管运行器是您的自定义环境中高度可配置的工作流程运行方式。
GitHub 托管的运行器:
- 接收操作系统、预安装的软件包和工具以及自托管运行器程序应用程序的自动更新。
- 被 GitHub 管理和维护。
- 为每个作业执行提供一个干净的实例。
- 使用 GitHub 计划设定的免费分钟数,超过免费分钟数后按分钟收费。
自托管运行器:
- 仅接收自托管运行器应用程序的自动更新。 您负责更新操作系统和所有其他软件。
- 可使用已付费的云服务或本地计算机。
- 可根据您的硬件、操作系统、软件和安全要求进行自定义。
- 无需为每个作业执行提供一个干净的实例。
- 可免费使用 GitHub Actions,但是您对运行器维护费用负责。
自托管运行器机器的要求
只要符合以下要求,便可将任何计算机用作自托管运行器:
- 您可以在机器上安装和运行自托管运行器应用程序。 更多信息请参阅“自托管运行器支持的操作系统”。
- 计算机可与 GitHub Actions 通信。 更多信息请参阅“自托管运行器与 GitHub 之间的通信”。
- 机器有足够的硬件资源来执行您计划运行的工作流程类型。 自托管运行器应用程序本身只需要很少的资源。
- 如果您想运行使用 Docker 容器操作或服务容器的工作流程,您必须使用 Linux 机器并安装 Docker。
使用限制
在使用自托管的运行器时,对 GitHub Actions 的使用有一些限制。 这些限制可能会有变动。
- 工作流程运行时间 - 每个工作流程的运行时限为 72 小时。 如果工作流程运行时间达到此限制,其运行将被取消。
- 作业排队时间 - 自托管运行器的每个作业最多可排队 24 小时。 如果自托管运行器在此限制内没有开始执行作业,则作业将被终止,并且无法完成。
- API 请求 - 在一个仓库的所有操作中,一个小时内最多可执行 1000 个 API 请求。 如果超出,额外的 API 调用将失败,这可能导致作业失败。
- 作业矩阵 - 作业矩阵在每次工作流程运行时最多可生成 256 个作业。 此限制也适用于自托管运行器。
自托管运行器支持的操作系统
自托管运行器应用程序支持以下操作系统。
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) 或更高版本
自托管运行器与 GitHub 之间的通信
自托管运行器将调查 GitHub 以检索应用程序更新,并检查是否有作业在排队等待处理。 自托管运行器使用 HTTPS long poll 打开 GitHub 连接 50 秒,如果没有收到任何响应,就会暂停并创建新的长轮询。 应用程序必须在机器上运行才能接受和运行 GitHub Actions 作业。
您必须确保机器具有适当的网络访问权限才可与以下列出的 GitHub URL 通信。
github.com
api.github.com
*.actions.githubusercontent.com
codeload.github.com
如果您对 GitHub 组织或企业帐户使用 IP 地址允许列表,必须将自托管运行器的 IP 地址添加到允许列表。 更多信息请参阅“管理组织允许的 IP 地址”或“在企业帐户中实施安全设置”。
您也可以通过代理服务器使用自托管的运行器。 更多信息请参阅“将代理服务器与自托管运行器一起使用”。
使用公共仓库的自托管运行器安全性
建议不要将自托管运行器用于公共仓库。
通过创建在工作流程中执行代码的拉取请求,公共仓库的复刻可能会在您的自托管运行器上运行危险代码。
这对 GitHub 托管的运行器不是问题,因为每个 GitHub 托管的运行器始终是一个干净的独立虚拟机, 在作业执行结束时被销毁。
在自托管运行器上运行不受信任的工作流程会给您的机器和网络环境带来严重的安全风险,特别是机器在同一环境下执行不同的作业时。 其中一些风险包括:
- 机器上运行的恶意程序。
- 逃避机器的运行器沙盒。
- 显示对机器网络环境的访问权限。
- 在机器上保持不需要或危险的数据。