托管运行器
我们在上一章中已经使用了托管运行器。托管运行器是 GitHub 托管的虚拟机,可以用来运行您的工作流。运行器适用于 Linux、Windows 和 macOS 操作系统。
隔离和权限
工作流中的每个作业都在虚拟机的新实例中执行,完全隔离。您拥有完全的管理员权限(在 Linux 上是无密码的 sudo
权限),并且 Windows 机器上的用户账户控制(UAC)已禁用。这意味着您可以在工作流中安装所需的任何工具(这会增加构建时间)。
运行器还可以访问用户界面(UI)元素。这使得您能够在运行器内执行 UI 测试(例如 Selenium),而无需通过另一个虚拟机进行测试。
硬件
GitHub 在 Microsoft Azure 上托管 Linux 和 Windows 运行器,使用的是 Standard_DS2_v2 虚拟机。Windows 和 Linux 虚拟机的硬件规格如下:
-
2 核心 CPU
-
7 GB RAM
-
14 GB SSD 磁盘空间
macOS 运行器托管在 GitHub 的 macOS 云中,具有以下硬件规格:
-
3 核心 CPU
-
14 GB RAM
-
14 GB SSD 磁盘空间
软件
在表 7.1 中,您可以查看当前可用的镜像列表:

您可以在 GitHub Actions 虚拟环境 中找到当前的镜像列表和所有包含的软件。
如果您希望请求将某个新工具安装为默认工具,您也可以在该仓库中提交问题。该仓库还包含有关运行器所有重大软件更新的公告,您可以使用 GitHub 仓库的 "watch" 功能来接收新版本发布的通知。
网络
托管运行器使用的 IP 地址会不定期变化。您可以通过 GitHub API 获取当前的 IP 列表:
curl \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/meta
有关更多信息,您可以访问 GitHub REST API 文档。
您可以使用这些信息,如果您需要一个允许列表(allow-list),以防止外部访问您的内部资源。但是请记住,任何人都可以使用托管运行器并执行代码!阻止其他 IP 地址并不会使您的资源变得安全。不要将内部系统暴露给这些未经过安全保护的 IP 地址,尤其是当它们来自公共互联网时!这意味着这些系统必须经过补丁更新,并且具备安全的身份验证机制。如果这些条件不满足,您需要使用自托管运行器。
如果您为 GitHub 组织或企业帐户使用 IP 地址允许列表,您将无法使用 GitHub 托管的运行器,而必须使用自托管的运行器。 |
定价
托管运行器在公共仓库中使用是免费的。根据您的 GitHub 版本,您将获得一定的存储量和每月免费的构建时间(见表 7.2)。

如果您通过 Microsoft 企业协议购买了 GitHub Enterprise,您可以将 Azure 订阅 ID 连接到您的 GitHub Enterprise 帐户。这使您能够支付额外的 GitHub Actions 使用费用,除了您 GitHub 版本中包含的部分。
在 Windows 和 macOS 运行器上运行的作业会消耗更多的构建时间!Windows 的消耗是 Linux 的 2 倍,macOS 的消耗是 Linux 的 10 倍。也就是说,使用 1,000 分钟的 Windows 会消耗您帐户中 2,000 分钟的配额,而使用 1,000 分钟的 macOS 会消耗 10,000 分钟。
这是因为这些构建分钟的费用更高。您可以支付额外的分钟费用,超出您 GitHub 版本中包含的部分。不同操作系统的构建分钟费用如下:
-
Linux:$0.008
-
macOS:$0.08
-
Windows:$0.016
您应该尽量使用 Linux 进行工作流,并将 macOS 和 Windows 的使用减少到最小,以降低构建成本。Linux 还具有最佳的启动性能。 |
所有运行器的额外存储费用相同,为每 GB $0.25。
如果您是按月计费的客户,您的帐户将默认设置为 $0(美元)的支出限制。这将防止额外的构建时间或存储使用。如果您是按发票支付的客户,您的帐户默认没有支出限制。
如果您将支出限制配置为高于 $0,您将为超过帐户中包含的分钟或存储支付费用,直到达到支出限制。