Skip to main content

GitHub 托管的运行程序

GitHub 提供托管的虚拟机来运行工作流。 虚拟机包含可供 GitHub Actions 使用的工具、包和设置。

GitHub 托管的运行程序概述

运行程序是在 GitHub Actions 工作流中执行作业的计算机。 例如,运行程序可以在本地克隆存储库,安装测试软件,然后运行评估代码的命令。

GitHub 提供可用于运行作业的运行程序,你也可以托管自己的运行程序。 除单 CPU 运行器外,每个 GitHub 托管的运行器都是由 GitHub 托管的新虚拟机(VM)。 单 CPU 运行器托管在共享 VM 上的容器中;请参阅GitHub 托管的运行器参考

每个 Runner 都预装了 Runner 应用程序和其他工具。 GitHub 托管的运行程序可用于 Ubuntu Linux、Windows 或 macOS 操作系统。 使用 GitHub 托管的运行程序时,设备维护和升级由你负责。

你可以选择标准 GitHub 托管的运行程序选项之一,或者,如果使用 GitHub Team 或 GitHub Enterprise Cloud 计划,则可以预配具有更多核心的运行程序或者由 GPU 处理器提供支持的运行程序。 这些计算机称为“大型运行器”。 有关详细信息,请参阅“大型运行器”。

大型运行器 还支持自定义映像,因此你可以创建和管理自己的预配置 VM 映像。 有关详细信息,请参阅 自定义映像

使用 GitHub 托管的运行程序需要网络访问,上传和下载速度至少为 70 千位每秒。

注意

GitHub 托管的运行程序的权利分钟数不适用于 托管用户帐户。 希望参与组织存储库的非组织成员的 Enterprise Managed Users 可以创建组织报表的分支,然后打开面向组织存储库的拉取请求。 这会在组织的 GitHub 托管运行程序上运行工作流。 有关详细信息,请参阅 关于 Enterprise Managed Users

运行程序映像

GitHub 为标准托管运行程序维护自己的 VM 映像集。 这包括 macOS、x64 Linux 和 Windows 映像。 映像列表及其包含的工具在 actions/runner-images 存储库中进行管理。 arm64 映像是合作伙伴映像,这些映像在 actions/partner-runner-images 存储库中进行管理。

GitHub 拥有的映像的预安装软件

GitHub 拥有的映像中包含的软件工具每周更新一次。 更新过程需要几天时间,整个部署结束后,main 分支上的预装软件列表将进行更新。

工作流日志包括指向准确运行程序上预安装的工具的链接。 要在工作流日志中查找此信息,请扩展 Set up job 部分。 在该部分下,展开 Runner Image 部分。 Included Software 后面的链接将说明运行程序上运行该工作流的预安装工具。

有关详细信息,请参阅“查看工作流程运行历史记录”。

GitHub 托管的运行程序除了上述参考中列出的包之外,还包括操作系统的默认内置工具。 例如,Ubuntu 和 macOS 运行程序包括 grepfindwhich 以及其他默认工具。

还可以查看每个版本的 Windows 和 Ubuntu 运行程序映像的软件物料清单 (SBOM)。 有关详细信息,请参阅“安全使用指南”。

我们建议使用操作来与运行程序上安装的软件进行交互。 此方法具有以下几个优点:

  • 通常,操作提供更灵活的功能,如版本选择、传递参数的能力和参数
  • 它可确保工作流中使用的工具版本无论软件更新如何,都将保持不变

如果想要请求工具,请在操作/运行程序映像中提出问题。 此存储库还包含有关运行程序上所有主要软件更新的公告。

注意

  • 还可以在 GitHub 托管的运行程序上安装其他软件。 请参阅“自定义 GitHub 托管的运行器”。
  • 虽然在技术上可以实现嵌套虚拟化,但在使用运行器时,它没有获得官方的支持。 任何嵌套 VM 的使用都是试验性的,并自行完成,我们不提供有关稳定性、性能或兼容性的保证。

自定义映像

通过自定义映像,可以从 GitHub提供的基础映像开始,并生成自己的 VM 映像,该映像已根据工作流需求进行自定义。 使用自定义映像,你可以进行以下操作:

  • 使用现有的工作流 YAML 语法生成自定义 VM 映像。
  • 在工作流开始之前,使用批准的工具、安全修补程序和依赖项预配置环境。
  • 在所有生成中创建一致且经过验证的基础环境。

自定义映像可以包括存储库代码、容器映像、二进制文件、证书和其他依赖项,以跨工作流创建一致的生成环境。 这有助于你控制供应链。 它们通过减少图像上的表面攻击途径来帮助缩短设置时间、提高生成性能并提高安全性。 管理员还可以应用策略来管理映像版本、保留期和年龄,以满足组织安全性和合规性要求。

自定义映像仅可用于大型运行程序,并且按与这些运行程序相同的每分钟费率计费。 自定义映像的存储通过 GitHub Actions 存储计费和计量。 有关计费的详细信息,请参阅 GitHub Actions 计费

若要开始使用自定义映像,请参阅 使用自定义映像

GitHub 托管的运行程序使用的云主机

GitHub 在 Microsoft Azure 中安装了 GitHub Actions 运行应用程序的虚拟机上托管 Linux 和 Windows 运行程序。 GitHub 托管的运行应用程序是 Azure Pipelines Agent 的复刻。 入站 ICMP 数据包被阻止用于所有 Azure 虚拟机,因此 ping 或 traceroute 命令可能无效。 GitHub 在 Azure 数据中心托管 macOS 运行程序。

工作流连续性

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

此外,如果工作流运行已成功排队,但未在 45 分钟内由 GitHub 托管的运行程序处理,则会丢弃排队的工作流运行。

etc/hosts 文件

GitHub 托管的运行器预配有 etc/hosts 文件,可阻止对各种加密货币挖掘池和恶意站点的网络访问。 MiningMadness.com 和 cpu-pool.com 等主机会重新路由到 localhost,因此它们不会带来重大安全风险。