概述
GitHub Actions 是一个持续集成和持续交付 (CI/CD) 平台,允许您自动化构建、测试和部署管道。您可以创建工作流来构建和测试您存储库的每个拉取请求,或者将合并的拉取请求部署到生产环境。
GitHub Actions 不仅限于 DevOps,还允许您在存储库中发生其他事件时运行工作流。例如,您可以运行一个工作流,以便每当有人在您的存储库中创建新问题时自动添加相应的标签。
GitHub 提供 Linux、Windows 和 macOS 虚拟机来运行您的工作流,或者您可以在您自己的数据中心或云基础设施中托管您自己的自托管运行器。
GitHub Actions 的组成部分
您可以配置 GitHub Actions **工作流**,以便在存储库中发生**事件**时触发,例如打开拉取请求或创建问题。您的工作流包含一个或多个**作业**,这些作业可以按顺序或并行运行。每个作业都将在其自己的虚拟机**运行器**或容器内运行,并且具有一或多个**步骤**,这些步骤要么运行您定义的脚本,要么运行**操作**,这是一种可重用的扩展,可以简化您的工作流。
工作流
**工作流**是一个可配置的自动化流程,它将运行一个或多个作业。工作流由签入到您存储库的 YAML 文件定义,并在存储库中由事件触发时运行,或者可以手动触发,或者按照定义的计划触发。
工作流在存储库的`.github/workflows`目录中定义。一个存储库可以有多个工作流,每个工作流都可以执行不同的任务集,例如
- 构建和测试拉取请求。
- 每次创建发行版时都部署您的应用程序。
- 每当打开新问题时都添加标签。
您可以在另一个工作流中引用工作流。有关更多信息,请参阅“重用工作流”。
有关更多信息,请参阅“编写工作流”。
事件
**事件**是存储库中触发**工作流**运行的特定活动。例如,当有人创建拉取请求、打开问题或将提交推送到存储库时,活动可能源自 GitHub。您还可以触发工作流以按 计划运行,通过 向 REST API 发送请求 或手动运行。
有关可用于触发工作流的事件的完整列表,请参阅触发工作流的事件。
作业
作业是在同一运行器上执行的工作流中的一组步骤。每个步骤要么是要执行的 shell 脚本,要么是要运行的操作。步骤按顺序执行,并且相互依赖。由于每个步骤都在同一运行器上执行,因此您可以将数据从一个步骤共享到另一个步骤。例如,您可以有一个步骤来构建您的应用程序,然后是一个步骤来测试构建的应用程序。
您可以使用其他作业配置作业的依赖项;默认情况下,作业没有依赖项并并行运行。当作业依赖于另一个作业时,它会在运行之前等待依赖作业完成。
例如,您可以为不同的架构配置多个构建作业,而没有任何作业依赖项,以及一个依赖于这些构建的打包作业。构建作业并行运行,一旦它们成功完成,打包作业就会运行。
更多信息,请参阅“选择工作流的功能”。
操作
操作是 GitHub Actions 平台的自定义应用程序,用于执行复杂但经常重复的任务。使用操作可以帮助减少在工作流文件中编写的重复代码量。操作可以从 GitHub 拉取您的 Git 存储库,为您的构建环境设置正确的工具链,或为您的云提供商设置身份验证。
您可以编写自己的操作,也可以在 GitHub Marketplace 中查找可在工作流中使用的操作。
有关操作的更多信息,请参阅“共享自动化”。
运行器
运行器是触发工作流时运行工作流的服务器。每个运行器一次只能运行一个作业。GitHub 提供 Ubuntu Linux、Microsoft Windows 和 macOS 运行器来运行您的工作流。每次工作流运行都在一个新的、新配置的虚拟机中执行。
GitHub 还提供更大规模的运行器,这些运行器具有更大的配置。更多信息,请参阅使用更大规模的运行器。
如果您需要不同的操作系统或需要特定的硬件配置,您可以自己托管运行器。
有关自托管运行器的更多信息,请参阅托管您自己的运行器。
后续步骤
GitHub Actions 可以帮助您自动化应用程序开发流程的几乎每个方面。准备好开始了吗?以下是一些使用 GitHub Actions 迈出下一步的有用资源
- 要创建 GitHub Actions 工作流,请参阅使用工作流模板。
- 对于持续集成 (CI) 工作流,请参阅构建和测试。
- 对于构建和发布包,请参阅发布包。
- 对于部署项目,请参阅用例和示例。
- 对于自动化 GitHub 上的任务和流程,请参阅管理项目。
- 有关演示 GitHub Actions 更多复杂功能的示例,请参阅用例和示例。这些详细示例说明了如何在运行器上测试代码、访问 GitHub CLI 以及使用并发和测试矩阵等高级功能。
- 要证明您在使用 GitHub Actions 自动化工作流和加速开发方面的熟练程度,请获得 GitHub 认证的 GitHub Actions 证书。更多信息,请参阅关于 GitHub 认证。