GitHub-hosted runners 概述
执行器是执行工作流中 GitHub Actions 作业的机器。 例如,运行程序可以在本地克隆存储库,安装测试软件,然后运行评估代码的命令。
GitHub 提供可用于运行作业的运行程序,或者可以 [托管自己的运行程序](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners)。 除单 CPU 运行器外,每个 GitHub 托管的运行器都是由 GitHub 托管的新虚拟机(VM)。 单 CPU 运行器托管在共享 VM 上的容器中;请参阅[AUTOTITLE](/actions/reference/runners/github-hosted-runners#single-cpu-runners)。
每个 Runner 都预装了 Runner 应用程序和其他工具。 GitHub 托管的运行器可以使用 Ubuntu Linux、Windows 或 macOS 操作系统。 使用GitHub托管的运行器时,计算机的维护和升级都会由我们为您处理。
可以选择标准 GitHub托管运行程序选项之一,或者,如果你处于 GitHub Team 或 GitHub Enterprise Cloud 计划中,则可以预配具有更多核心的运行程序,或者由 GPU 处理器提供支持的运行程序。 这些计算机称为“大型运行器”。有关详细信息,请参阅 大型运行程序。
大型运行器 还支持自定义映像,使你能够创建和管理自己的预配置 VM 映像。 有关详细信息,请参阅 [自定义映像](#custom-images)。
使用GitHub托管运行程序需要网络访问,上传和下载网速至少为每秒70千比特。
运行程序映像
GitHub 维护我们标准托管执行代理的专有 VM 映像集。 这包括 macOS、x64 Linux 和 Windows 映像。 映像列表及其包含的工具在 [`actions/runner-images`](https://github.com/actions/runner-images) 存储库中进行管理。 arm64 映像是合作伙伴映像,这些映像在 [`actions/partner-runner-images`](https://github.com/actions/partner-runner-images) 存储库中进行管理。
GitHub 拥有的映像的预安装软件
GitHub 拥有的映像中包含的软件工具每周更新一次。 更新过程需要几天时间,整个部署结束后,main 分支上的预装软件列表将进行更新。
工作流日志包括指向准确运行程序上预安装的工具的链接。 要在工作流日志中查找此信息,请扩展 Set up job 部分。 在该部分下,展开 Runner Image 部分。
Included Software 后面的链接将说明运行程序上运行该工作流的预安装工具。
有关详细信息,请参阅“查看工作流程运行历史记录”。
GitHub-托管运行程序包括操作系统的默认内置工具,以及上述引用中列出的包。 例如,Ubuntu 和 macOS 运行程序包括 `grep`、`find` 和 `which` 以及其他默认工具。
还可以查看每个版本的 Windows 和 Ubuntu 运行程序映像的软件物料清单 (SBOM)。 有关详细信息,请参阅“安全使用指南”。
我们建议使用操作来与运行程序上安装的软件进行交互。 此方法具有以下几个优点:
- 通常,操作提供更灵活的功能,如版本选择、传递参数的能力和参数
- 它可确保工作流中使用的工具版本无论软件更新如何,都将保持不变
如果想要请求工具,请在操作/运行程序映像中提出问题。 此存储库还包含有关运行程序上所有主要软件更新的公告。
注意
- 还可以在GitHub托管的运行程序上安装其他软件。 请参阅“自定义 GitHub 托管的运行器”。
- 虽然在技术上可以实现嵌套虚拟化,但在使用运行器时,它没有获得官方的支持。 任何嵌套 VM 的使用都是试验性的,并自行完成,我们不提供有关稳定性、性能或兼容性的保证。
自定义映像
自定义映像使你能够从 GitHub 提供的基础映像开始构建,并生成根据工作流需求自定义的 VM 映像。 使用自定义映像,你可以进行以下操作:
- 使用现有的工作流 YAML 语法生成自定义 VM 映像。
- 在工作流开始之前,使用批准的工具、安全修补程序和依赖项预配置环境。
- 在所有生成中创建一致且经过验证的基础环境。
自定义映像可以包括存储库代码、容器映像、二进制文件、证书和其他依赖项,以跨工作流创建一致的生成环境。 这有助于你控制供应链。 它们通过减少图像上的表面攻击途径来帮助缩短设置时间、提高生成性能并提高安全性。 管理员还可以应用策略来管理映像版本、保留期和年龄,以满足组织安全性和合规性要求。
自定义映像只能与 大型运行器. 使用自定义映像的作业按与那些任务运行器相同的每分钟费率计费。 自定义映像的存储通过 GitHub Actions 存储计费和计量。 有关详细信息,请参阅“GitHub Actions计费”。
若要开始使用自定义映像,请参阅 使用自定义映像。
由GitHub托管运行程序使用的云主机
GitHub在安装了 GitHub Actions 运行程序的 Microsoft Azure 虚拟机上托管 Linux 和 Windows 运行程序。
GitHub托管的运行器应用程序是 Azure Pipelines 代理的一个分支。 入站 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,因此它们不会带来重大安全风险。