工作流是一个可配置的自动化过程,将运行一个或多个作业。工作流是由签入到存储库中的YAML文件定义的,当存储库中的事件触发工作流时,工作流就会运行,也可以手动触发工作流,或者按照已定义的时间表触发工作流。
工作流定义在存储库的.github/ Workflows目录中,并且存储库可以有多个工作流,每个工作流可以执行一组不同的任务。例如,您可以有一个工作流来构建和测试拉取请求,另一个工作流在每次创建发布时部署您的应用程序,还有另一个工作流在每次有人打开新问题时添加标签。
workflows 能做哪些
GitHub Actions 是一种持续集成和持续交付 (CI/CD) 平台,可用于自动执行生成、测试和部署管道。 您可以创建工作流程来构建和测试存储库的每个拉取请求,或将合并的拉取请求部署到生产环境。
GitHub Actions 不仅仅是 DevOps,还允许您在存储库中发生其他事件时运行工作流程。 例如,您可以运行工作流程,以便在有人在您的存储库中创建新问题时自动添加相应的标签。
GitHub 提供 Linux、Windows 和 macOS 虚拟机来运行工作流程,或者您可以在自己的数据中心或云基础架构中托管自己的自托管运行器。
作业是工作流中在同一运行器上执行的一组步骤。 每个步骤要么是一个将要执行的 shell 脚本,要么是一个将要运行的动作。 步骤按顺序执行,并且相互依赖。 由于每个步骤都在同一运行器上执行,因此您可以将数据从一个步骤共享到另一个步骤。 例如,可以有一个生成应用程序的步骤,后跟一个测试已生成应 用程序的步骤。
您可以配置作业与其他作业的依赖关系;默认情况下,作业没有依赖关系,并且彼此并行运行。 当一个作业依赖于另一个作业时,它将等待从属作业完成,然后才能运行。 例如,对于没有依赖关系的不同体系结构,您可能有多个生成作业,以及一个依赖于这些作业的打包作业。 生成作业将并行运行,当它们全部成功完成后,打包作业将运行。
如何使用 workflows
-
在存储库中,创建
.github/workflows/
目录来存储工作流文件。 -
在
.github/workflows/
目录中,创建一个名为 learn-github-actions.yml 的新文件并添加以下代码。 -
提交这些更改并将其推送到您的 GitHub 仓库。
了解 workflows 的文件
name: '' # 可选 - 工作流的名称,它将显示在 GitHub 存储库的“操作”选项卡中。
run-name: '' # 可选 - 从工作流生成的工作流运行的名称,该名称将显示在存储库的“操作”选项卡上的工作流运行列表中。此示例使用包含 github 上下文的表达式来显示触发了工作流运行的参与者的用户名。 有关详细信息
on: '' # 指定此工作流程的触发器。 此示例使用 push 事件,因此每当有人将更改推送到存储库或合并拉取请求时都会触发工作流运行。 这是由到每个分支的推送触发的
jobs: '' # 工作流中运行的所有作业组合在一起
check-bats-version: '' # check-bats-version: 定义一个名为 check-bats-version 作业。 子键将定义作业的属性
runs-on: '' # 将作业配置为在最新版本的 Ubuntu Linux 运行器上运行。 这意味着该作业将在 GitHub 托管的新虚拟机上执行
steps: # 将在 check-bats-version 作业中运行的所有步骤组合在一起。 此部分下嵌套的每项都是一个单独的操作或 shell 脚本
uses: '' # uses 关键字指定此步骤将运行 actions/checkout 操作的 v3。 这是一个将存储库签出到运行器上的操作,允许您对代码(如生成和测试工具)运行脚本或其他操作。 每当工作流程将针对存储库的代码运行时,都应使用签出操作。
with: '' # 此步骤使用 actions/setup-node@v3 操作安装指定的 Node.js 版本(本示例使用 v14)。 这会将 node 和 npm 命令都放在 PATH 中
run: '' # run 关键字指示作业在运行器上执行命令。 在这种情况下,你使用 npm 来安装 bats 软件测试包