探索运行器
GitHub 运行器是执行 GitHub Actions 工作流的计算资源。 每个运行程序一次可以运行一个作业。 开发人员可以使用它们直接从 GitHub 存储库内部执行生成、测试和部署任务。 GitHub 运行器有两种主要类型:
- GitHub 托管的运行器是由 GitHub 提供和管理的虚拟化或容器化计算资源。
- 自托管运行器是 GitHub 用户和组织自行预配和管理的物理、虚拟化或容器化计算资源。
每种类型都有一些独特的特征和许多不同的功能,在使用时需要考虑许多不同的因素。
请务必注意,GitHub 强烈建议不要在公共存储库中使用自托管运行器。 这样做会带来重大安全风险,因为这可能允许任何人在组织的专用环境中运行代码。
GitHub 托管的运行程序
GitHub 托管的运行器提供一种便捷的解决方案,用于在 GitHub Actions 中执行工作流,而无需管理底层硬件和软件组件。 它们可以根据需求自动缩放,确保在高峰使用期提供最佳性能。 GitHub 为 GitHub 托管的运行器提供多种预配置环境,涵盖不同的软件配置和操作系统,包括 Ubuntu Linux、Microsoft Windows 和 macOS。
GitHub 托管的运行器包含操作系统的默认内置工具。 例如,Ubuntu 和 macOS 运行器包含 grep、find 和 which。 若要识别运行器上预装的所有其他工具,用户可以查看 Windows 和 Ubuntu 运行器映像的每个版本的软件材料清单 (SBOM)。 或者,用户可以查看工作流日志中“设置作业”部分的“运行器映像”子部分。 “包含的软件”条目后面的链接描述了运行工作流的运行器上预装的所有工具。 还可以通过创建一个用于将包安装为现有工作流的一部分的作业,在 GitHub 托管的运行器上安装其他软件。
GitHub 托管的运行器在 GitHub 的云基础结构上运行,利用虚拟机或容器来执行工作流。 每个工作流执行在其自身的环境中隔离,确保安全性和可再现性。 GitHub 托管的运行器与 GitHub Actions 无缝集成,因此用户可以在 GitHub 存储库托管的工作流中直接引用这些运行器。
使用 GitHub 托管的运行器时,对 GitHub Actions 的使用存在一些限制。 具体而言,工作流中每个作业的执行时间最长为 6 小时。 如果作业达到此限制,该作业将会终止而无法完成。 仅限在 35 天内运行每个工作流。 如果工作流运行达到此限制,其运行将被取消。 此时间段包括执行持续时间以及等待和审批所用的时间。
先决条件
在实施 GitHub 托管的运行器之前,用户必须有一个 GitHub 存储库,在其中可以使用 GitHub Actions 定义工作流。 所有有权访问 GitHub Actions 的 GitHub 用户都可以使用运行器。
实现
与自托管运行器不同,GitHub 托管的运行器是作为单个工作流执行的一部分自动预配的。 用户将工作流定义为 YAML 格式的文件,这些文件存储在 GitHub 存储库的 .github/workflows 目录中。 在工作流配置中,用户可以指定所需的运行器环境,包括操作系统和软件依赖项。 每当触发工作流时,就会根据需要设置具有匹配规范的运行器(为每个作业配置一个运行器)。 可以根据代码推送、拉取请求或存储库调试事件等事件手动或自动激发触发器。
GitHub 托管的运行器使用 GitHub Actions 提供的令牌或凭据向 GitHub 进行身份验证。 它们依赖于使用内置连接来与 GitHub 平台通信和下载工作流项目。
维护
GitHub 管理 GitHub 托管的运行器的更新和维护,确保它们保持使用最新的软件版本和安全修补程序。 运行器中包含的软件工具每周更新一次。 将监视并记录运行器活动,以帮助跟踪工作流执行和故障排除。
许可和成本
GitHub 托管的运行器包含在 GitHub Actions 的定价中,超出免费层的部分将根据工作流使用分钟数进行计费。 用户可以从自动化且经济高效的缩放中受益,因为 GitHub 会根据需求自动预配和解除分配运行器。
自托管运行程序
与 GitHub 托管的运行器相比,自托管运行器提供更好的控制度和自定义选项,并且执行环境能够满足更广泛的要求。 可将其部署在本地或云中,具体取决于网络连接、成本和资源可用性等条件。
自托管运行器由用户预配和管理,他们可以完全控制执行环境。 自托管运行器在硬件规格、软件配置和网络设置等方面完全可自定义。 它们还有助于与现有基础结构和工具集成,从而最大程度地减少了出现兼容性和互操作性问题的可能性。
与 GitHub 托管的运行器不同,完成单个作业执行和工作流运行所需的时间没有限制。
先决条件
用户必须在其选择的基础结构上设置和配置自托管运行器,包括安装运行器软件和任何其他软件依赖项。 GitHub (https://github.com/actions/runner) 上以开源项目的形式提供了自托管运行器的源代码。 每个自托管运行器充当一个代理来与 GitHub Actions 通信以执行工作流。
自托管运行器需要出站网络连接、身份验证凭据和授权才能访问 GitHub 平台和下载工作流项目。 根据运行器的位置,可能需要配置防火墙规则才能满足这些要求。
实现
与 GitHub 托管运行器一样,实施方案涉及到定义 YAML 格式的工作流并将其存储在 GitHub 存储库的 .github/workflows 目录中。 但是,要让工作流使用自托管运行器,用户首先需要注册自托管运行器,并提供所需的身份验证令牌或凭据。 在注册过程中,用户需指定运行器名称、标签和执行环境参数等特征。
可以在企业中的不同级别进行注册:
- 存储库级别(单个存储库)
- 组织级别(组织中的多个存储库)
- 企业级别(企业中的多个组织)
维护
用户负责更新和维护自托管运行器,包括安装软件更新和安全修补程序。 维护还涉及到监视运行器的运行状况和性能,以及排查整个运行器运行期出现的任何问题。
许可和成本
除了 GitHub Actions 的定价和任何相关基础结构成本(包括计算、存储和网络)之外,自托管运行器不会产生其他许可费用。 优化资源分配和利用率是用户的责任。