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 运行器默认提供 grep、find、which 等工具。
你还可以查看每个 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 等主机会被重定向至本地回环地址,从而避免构成显著的安全风险。