跳至主要内容

GitHub 托管的运行程序

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

GitHub 托管运行器概述

运行器是执行 GitHub Actions 工作流中作业的机器。例如,运行器可以在本地克隆你的仓库、安装测试软件,然后运行评估代码的命令。

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

每个运行器都预装了运行器应用程序及其他工具。GitHub 托管运行器提供 Ubuntu Linux、Windows 或 macOS 操作系统。当你使用 GitHub 托管运行器时,机器的维护和升级均由我们代为处理。

你可以选择标准的 GitHub 托管运行器选项,或者如果你使用 GitHub Team 或 GitHub Enterprise Cloud 计划,可以配置拥有更多 CPU 核心或搭载 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)。更多信息请参见 安全使用参考

我们建议使用 Action 与运行器上已安装的软件交互。这种做法有多项好处。

  • 通常,Action 提供更灵活的功能,例如版本选择、传参和参数化。
  • 它能保证无论软件如何更新,工作流中使用的工具版本保持一致。

如果你想请求某个工具,请在 actions/runner-images 开启 Issue。该仓库还会发布关于运行器上所有主要软件更新的公告。

注意

  • 你也可以在 GitHub 托管运行器上安装额外的软件。参见 自定义 GitHub 托管运行器
  • 虽然在使用运行器时技术上可以实现嵌套虚拟化,但官方并不支持。任何嵌套 VM 的使用均属实验性质,需自行承担风险,我们不对其稳定性、性能或兼容性作任何保证。

自定义镜像

自定义镜像允许你以 GitHub 提供的基础镜像为起点,构建符合工作流需求的专属 VM 镜像。使用自定义镜像,你可以

  • 使用现有的工作流 YAML 语法构建自定义 VM 镜像。
  • 在工作流启动前预先配置好已批准的工具、安全补丁和依赖项。
  • 在所有构建中创建一致且已验证的基础环境。

自定义镜像可以包含代码仓库、容器镜像、二进制文件、证书以及其他依赖项,从而在工作流之间创建一致的构建环境。这帮助你掌控供应链,减少设置时间、提升构建性能,并通过降低镜像的攻击面来强化安全性。管理员还可以制定策略,管理镜像版本、保留期限和使用时长,以满足组织的安全与合规要求。

自定义镜像只能与更大运行器一起使用。使用自定义镜像的作业按照相同的每分钟计费规则收费。自定义镜像的存储通过 GitHub Actions 存储计费并计量。更多信息请参见 GitHub Actions 计费

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

GitHub 托管运行器使用的云主机

GitHub 在 Microsoft Azure 上的虚拟机中托管 Linux 和 Windows 运行器,并预装 GitHub Actions 运行器应用程序。GitHub 托管运行器应用程序是 Azure Pipelines Agent 的一个分支。所有 Azure 虚拟机均阻止入站 ICMP 数据包,因此 ping 或 traceroute 命令可能无法工作。GitHub 在 Azure 数据中心托管 macOS 运行器。

工作流连续性

如果 GitHub Actions 服务暂时不可用,则在触发后 30 分钟内未进入排队的工作流运行将被丢弃。例如,工作流被触发后,GitHub Actions 服务不可用时间达 31 分钟或更久,则该工作流运行将不被处理。

另外,如果工作流运行已成功排队,但在 45 分钟内仍未被 GitHub 托管运行器处理,则该排队的工作流运行同样会被丢弃。

etc/hosts 文件

GitHub 托管运行器预置了一个 etc/hosts 文件,用于阻断对各类加密货币挖矿池和恶意站点的网络访问。诸如 MiningMadness.com、cpu-pool.com 等主机会被重定向至本地回环地址,从而避免构成显著的安全风险。

© . This site is unofficial and not affiliated with GitHub, Inc.