# 了解GitHub Actions

了解关于GitHub Actions的核心概念和基本术语的基础知识。

## 概述

GitHub Actions 是一种持续集成和持续交付 (CI/CD) 平台，可用于自动执行生成、测试和部署管道。 可以创建工作流来生成和测试存储库的每个拉取请求，或将合并的拉取请求部署到生产环境。

GitHub Actions 除了 DevOps 之外，还可以在存储库中发生其他事件时运行工作流。 例如，您可以运行工作流程，以便在有人在您的存储库中创建新问题时自动添加相应的标签。

GitHub 提供 Linux、Windows 和 macOS 虚拟机来运行工作流，或者可以在自己的数据中心或云基础结构中托管自己的自承载运行程序。

## GitHub Actions的组件

可以在存储库中发生GitHub Actions时配置\*\*\*\* 以触发，例如打开拉取请求或创建议题。 工作流包含一个或多个可按顺序或并行运行的**作业**。 每个作业都将在其自己的虚拟机**运行器**中或在容器中运行，并具有一个或多个**步骤**，用于运行定义的脚本或运行**动作**。动作是一个可重用的扩展，可简化工作流。

![一个事件的示意图，该事件触发运行器 1 以运行作业 1，然后触发运行器 2 以运行作业 2。 每个作业都分为多个步骤。](/assets/images/help/actions/overview-actions-simple.png)

### 工作流

**工作流**是一个可配置的自动化过程，它将运行一个或多个作业。 工作流程由签入到存储库的 YAML 文件定义，并在存储库中的事件触发时运行，也可以手动触发，或按定义的时间表触发。

工作流在仓库的 `.github/workflows` 目录中定义。 一个仓库可以有多个工作流，每个工作流都可以执行一组不同的任务，例如：

* 构建和测试拉取请求
* 在每次创建发布时，部署应用程序
* 每当创建新提议时，添加标签

可以在另一个工作流中引用工作流。 有关详细信息，请参阅“[重用工作流](/zh/actions/how-tos/reuse-automations/reuse-workflows)”。

有关详细信息，请参阅“[撰写工作流程](/zh/actions/how-tos/write-workflows)”。

### 事件

**事件**是存储库中触发**工作流程**运行的特定活动。 例如，当有人创建拉取请求、打开议题或将提交推送到存储库时，活动可能源自 GitHub。 此外，还可以通过[发布到 REST API](/zh/actions/reference/workflows-and-actions/events-that-trigger-workflows#schedule) 或者手动方式触发工作流按[计划](/zh/rest/repos/repos#create-a-repository-dispatch-event)运行。

有关可用于触发工作流的事件的完整列表，请参阅[触发工作流的事件](/zh/actions/reference/workflows-and-actions/events-that-trigger-workflows)。

### 作业

**作业**是工作流中在同一**运行器**上执行的一组**步骤**。 每个步骤要么是一个将要执行的 shell 脚本， 要么是一个将要运行的**动作**。 步骤按顺序执行，并且相互依赖。 每个步骤都在同一运行器上执行，因此你可在不同步骤之间共享数据。 例如，可以有一个生成应用程序的步骤，后跟一个测试已生成应用程序的步骤。

默认情况下，步骤按顺序运行，但当工作流受益于并行执行时，还可以并发运行所选步骤，例如启动长时间运行的服务，同时执行后续步骤。 有关详细信息，请参阅“[GitHub Actions 的工作流语法](/zh/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstepsbackground)”。

你可以配置作业与其他作业的依赖关系；默认情况下，作业没有依赖关系，并且会并行运行。 当一个作业依赖于另一个作业时，它会等待依赖作业完成，然后才能运行。

也可以使用矩阵\*\*\*\* 多次运行同一作业，每次使用不同的变量组合（例如操作系统或语言版本）。

例如，你可以为不同的体系结构配置多个构建作业，这些作业之间没有依赖关系，并有一个依赖于这些构建的打包作业。 生成作业并行运行，一旦成功完成，打包作业就会运行。

有关详细信息，请参阅“[选择工作流执行的操作](/zh/actions/how-tos/write-workflows/choose-what-workflows-do)”。

### 操作

一组预定义的可重用作业或代码称为 **操作**，用于在**工作流** 中执行特定任务，可减少你在工作流文件中编写的重复代码量。 以下是操作可执行的一些任务：

* 从GitHub 拉取您的 Git 存储库
* 为生成环境设置正确的工具链
* 设置云提供商的身份验证

可以编写自己的操作，也可以查找在工作流中使用的 GitHub Marketplace操作。

有关操作的详细信息，请参阅 [重用自动化](/zh/actions/how-tos/reuse-automations)。

### 运行器

**运行器**是触发工作流时运行工作流的服务器。 每个运行器一次可以运行一个**作业**。

GitHub 提供 Ubuntu Linux、Microsoft Windows 和 macOS 运行程序来运行 **工作流**。 每个工作流运行都在新预配的全新虚拟机中执行。

GitHub 还提供 大型运行器，可用于更大的配置。 有关详细信息，请参阅“[使用较大运行器](/zh/actions/how-tos/manage-runners/larger-runners)”。

如果需要其他操作系统或需要特定的硬件配置，可以托管自己的运行程序。

有关自托管运行器的详细信息，请参阅 [使用自承载运行器](/zh/actions/how-tos/manage-runners/self-hosted-runners)。

## 后续步骤

GitHub Actions 可帮助你自动执行应用程序开发过程的几乎所有方面。 准备好开始了吗？ 以下是一些有助于你借助 GitHub Actions 继续下一步的资源：

* 若要创建 GitHub Actions 工作流，请参阅 [使用工作流模板](/zh/actions/how-tos/write-workflows/use-workflow-templates)。
* 有关持续集成 (CI) 工作流，请参阅 [构建和测试代码](/zh/actions/tutorials/build-and-test-code)。
* 有关构建和发布包的信息，请参阅 [发布包](/zh/actions/tutorials/publish-packages)。
* 有关部署项目，请参阅 [部署到第三方平台](/zh/actions/how-tos/deploy/deploy-to-third-party-platforms)。
* 有关在 GitHub 上自动执行任务和流程的信息，请参阅 [使用 GitHub Actions 管理你的工作](/zh/actions/tutorials/manage-your-work)。
* 有关演示 GitHub Actions 更复杂功能的示例，请参阅 [选择工作流执行的操作](/zh/actions/how-tos/write-workflows/choose-what-workflows-do)。 这些详细示例说明如何在运行程序上测试代码、访问 GitHub CLI 并使用高级功能（如并发和测试矩阵）。
* 要证明你在使用 GitHub Actions 自动化工作流和加速开发方面的熟练程度，请通过 GitHub Actions 获取 GitHub Certifications 证书。 有关详细信息，请参阅 [关于 GitHub Certifications](/zh/get-started/showcase-your-expertise-with-github-certifications/about-github-certifications)。

> \[!NOTE]
> 对于需要上下文判断存储库内容的自动化，还可以使用自然语言而不是传统agentic workflows工作流进行创作GitHub Actions。 有关详细信息，请参阅 [第一个代理工作流](/zh/copilot/how-tos/github-agentic-workflows/quickstart) 和 [创建GitHub代理工作流](/zh/copilot/how-tos/github-agentic-workflows/creating-github-agentic-workflows)。