# 了解GitHub Actions

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

> \[!NOTE]
> GitHub Enterprise Server 目前不支持 GitHub 托管的运行器。

## 概述

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

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

必须托管自己的 Linux、Windows 或 macOS 虚拟机才能运行工作流 你的 GitHub Enterprise Server 实例。

有关将 GitHub Actions 引入您的企业的更多信息，请参阅 [向企业介绍GitHub Actions](/zh/enterprise-server@3.22/admin/managing-github-actions-for-your-enterprise/getting-started-with-github-actions-for-your-enterprise/introducing-github-actions-to-your-enterprise)。

## GitHub Actions的组件

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

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

### 工作流

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

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

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

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

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

### 事件

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

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

### 作业

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

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

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

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

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

### 操作

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

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

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

若要在企业中共享操作而不公开发布操作，可以将操作存储在内部存储库中，然后将存储库配置为允许访问 GitHub Actions 同一组织或企业中任何组织拥有的其他存储库中的工作流。 有关详细信息，请参阅“[与企业共享操作和工作流](/zh/enterprise-server@3.22/actions/how-tos/reuse-automations/share-with-your-enterprise)”。

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

### 运行器

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

你必须为 GitHub Enterprise Server 自行托管运行器。

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

## 后续步骤

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

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

## 其他阅读材料

* [企业版GitHub Actions 之介绍](/zh/enterprise-server@3.22/admin/managing-github-actions-for-your-enterprise/getting-started-with-github-actions-for-your-enterprise/about-github-actions-for-enterprises)