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 为标准托管运行程序维护自己的 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,因此它们不会带来重大安全风险。