Skip to main content

了解 GitHub Actions

学习 GitHub Actions 的基础知识,包括核心概念和基本术语。

概览

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

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

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

GitHub Actions 的组件

您可以将 GitHub Actions 工作流程配置为在存储库中发生事件时触发,例如打开拉取请求或创建议题。 工作流程包含一个或多个作业,这些作业可以按顺序运行,也可以并行运行。 每个作业都将在其自己的虚拟机运行器中运行,或者在容器内运行,并且具有一个或多个步骤 ,这些步骤要么运行您定义的脚本,要么运行操作,这是一个可重用的扩展,可以简化您的工作流程。

工作流程概述

工作流程

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

Workflows are defined in the .github/workflows directory in a repository, and a repository can have multiple workflows, each of which can perform a different set of tasks. 例如,您可以有一个工作流程来构建和测试拉取请求,另一个工作流程用于在每次创建发布时部署应用程序,还有一个工作流程在每次有人打开新议题时添加标签。

您可以在另一个工作流中引用工作流程,请参阅“重用工作流程”。

有关工作流程的详细信息,请参阅“使用工作流程”。

事件

事件是存储库中触发工作流程运行的特定活动。 例如,当有人创建拉取请求、打开议题或将提交推送到存储库时,活动可能源自 GitHub。 您还可以通过发布到 REST API 或手动来触发按计划运行的工作流程。

有关可用于触发工作流程的事件的完整列表,请参阅触发工作流程的事件

Jobs

作业是工作流程中的一组步骤,它们在同一运行器上执行。 每个步骤要么是将要执行的 shell 脚本,要么是将运行的操作 。 步骤按顺序执行,并且相互依赖。 由于每个步骤都在同一运行器上执行,因此您可以将数据从一个步骤共享到另一个步骤。 例如,可以有一个生成应用程序的步骤,后跟一个测试已生成应用程序的步骤。

您可以配置作业与其他作业的依赖关系;默认情况下,作业没有依赖关系,并且彼此并行运行。 当一个作业依赖于另一个作业时,它将等待从属作业完成,然后才能运行。 例如,对于没有依赖关系的不同体系结构,您可能有多个生成作业,以及一个依赖于这些作业的打包作业。 生成作业将并行运行,当它们全部成功完成后,打包作业将运行。

有关作业的详细信息,请参阅“使用作业”。

Actions

操作是 GitHub Actions 平台的自定义应用程序,用于执行复杂但经常重复的任务。 使用操作可帮助减少在工作流程文件中编写的重复代码量。 操作可以从 GitHub 拉取 git 存储库,为您的构建环境设置正确的工具链,或设置对云提供商的身份验证。

您可以编写自己的操作,也可以在 GitHub Marketplace 中找到要在工作流程中使用的操作。

更多信息请参阅“创建操作”。

运行器

运行器是在触发工作流程时运行工作流程的服务器。 每个运行器一次可以运行一个作业。 GitHub 提供 Ubuntu Linux、Microsoft Windows 和 macOS 运行器来运行您的工作流程;每个工作流程运行都在新预配的全新虚拟机中执行。 如果您需要不同的操作系统或需要特定的硬件配置,则可以托管自己的运行器。 有关 自托管运行器 的更多信息,请参阅“托管您自己的运行器”。

创建示例工作流程

GitHub Actions 使用 YAML 语法来定义工作流程。 Each workflow is stored as a separate YAML file in your code repository, in a directory named .github/workflows.

您可以在仓库中创建示例工作流程,只要推送代码,该工作流程就会自动触发一系列命令。 In this workflow, GitHub Actions checks out the pushed code, installs the bats testing framework, and runs a basic command to output the bats version: bats -v.

  1. 在您的仓库中,创建 .github/workflows/ 目录来存储工作流程文件。

  2. .github/workflows/ 目录中,创建一个名为 learn-github-actions.yml 的新文件并添加以下代码。

    name: learn-github-actions
    on: [push]
    jobs:
      check-bats-version:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v3
          - uses: actions/setup-node@v3
            with:
              node-version: '14'
          - run: npm install -g bats
          - run: bats -v
    
  3. 提交这些更改并将其推送到您的 GitHub 仓库。

您的新 GitHub Actions 工作流程文件现在安装在您的仓库中,每次有人推送更改到仓库时都会自动运行。 To see the details about a workflow's execution history, see "Viewing the activity for a workflow run."

了解工作流程文件

为帮助您了解如何使用 YAML 语法来创建工作流程文件,本节解释介绍示例的每一行:

name: learn-github-actions
可选 - 将出现在 GitHub 仓库的 Actions(操作)选项卡中的工作流程名称。
on: [push]
指定此工作流程的触发器。 此示例使用推送事件,因此每次有人将更改推送到存储库或合并拉取请求时,都会触发工作流程运行。 This is triggered by a push to every branch; for examples of syntax that runs only on pushes to specific branches, paths, or tags, see "Workflow syntax for GitHub Actions."
jobs:
learn-github-actions 工作流程中运行的所有作业组合在一起。
check-bats-version:
定义名为 check-bats-version 的作业。 子键将定义作业的属性。
  runs-on: ubuntu-latest
将作业配置为在最新版本的 Ubuntu Linux 运行器上运行。 这意味着该作业将在 GitHub 托管的新虚拟机上执行。 For syntax examples using other runners, see "Workflow syntax for GitHub Actions."
  steps:
check-bats-version 作业中运行的所有步骤组合在一起。 此部分下嵌套的每项都是一个单独的操作或 shell 脚本。
    - uses: actions/checkout@v3
uses 关键字指定此步骤将运行 actions/checkout 操作的 v3。 这是一个将存储库签出到运行器上的操作,允许您对代码(如生成和测试工具)运行脚本或其他操作。 每当工作流程将针对存储库的代码运行时,都应使用签出操作。
    - uses: actions/setup-node@v3
      with:
        node-version: '14'
此步骤使用 actions/setup-node@v3 操作来安装指定版本的 Node.js(此示例使用 v14)。 这会将 nodenpm 命令放在 PATH中。
    - run: npm install -g bats
run 关键字指示作业在运行器上执行命令。 在这种情况下,使用 npm 来安装 bats 软件测试包。
    - run: bats -v
最后,您将运行 bats 命令,并且带有输出软件版本的参数。

可视化工作流程文件

在此关系图中,您可以看到刚刚创建的工作流程文件,以及 GitHub Actions 组件在层次结构中的组织方式。 每个步骤执行单个操作或 shell 脚本。 步骤 1 和 2 运行操作,步骤 3 和 4 运行 shell 脚本。 要查找更多为工作流预构建的操作,请参阅“查找和自定义操作”。

工作流程概述

Viewing the activity for a workflow run

When your workflow is triggered, a workflow run is created that executes the workflow. After a workflow run has started, you can see a visualization graph of the run's progress and view each step's activity on GitHub.

  1. 在 GitHub.com 上,导航到仓库的主页面。

  2. 在仓库名称下,单击 Actions(操作)

    导航到仓库

  3. 在左侧边栏中,单击您想要查看的工作流程。

    工作流程结果的屏幕截图

  4. 在“Workflow runs(工作流程运行)”下,单击您想要查看的运行的名称。

    工作流程运行的屏幕截图

  5. Jobs(作业)下或可视化图中,单击您要查看的作业。

    选择作业

  6. View the results of each step.

    工作流程运行详细信息的屏幕截图

更复杂的示例

For examples that demonstrate more complex features of GitHub Actions, see "Examples." You can see detailed examples that explain how to test your code on a runner, access the GitHub CLI, and use advanced features such as concurrency and test matrices.

后续步骤

联系支持

如果需要任何与工作流程配置相关的帮助,比如语法、GitHub 托管的运行器或构建操作,请在 GitHub Community Support 的 GitHub Actions 类别中查找现有主题或发起一个新主题。

如果您有对 GitHub Actions 的反馈或功能请求,请在 GitHub Actions 的反馈讨论 中分享。

如有以下任意情况,无论您的使用或预期使用是否属于使用限制类别,都请联系 GitHub Support

  • 如果您认为您的帐户受到不正确的限制
  • 如果您在执行您的操作之一时遇到意外错误,例如:唯一的 ID
  • 如果你遇到与预期矛盾现有行为,但不一定是文件记录的情况。