概述

Actions 是 Github 用于 CI/CD 的工具。

repository 发生 events时触发 GitHub Actions workflows,例如open pull requestcreate issue。workflow 包含一个或多个可以按顺序或并行运行的jobs。 每个 job 都将在其自己的runner内运行,并具有一个或多个steps,这些步骤要么运行自定义的脚本,要么运行一个action,action 是一种可重复使用的扩展,可以简化工作流程。

Workflow

workflow定义在repo.github/workflows目录中,由repo中的event触发运行,也可以手动触发,按定时触发。

repo可以有多个workflow,每个workflow可以执行一组不同的任务。 例如,一个workflow来拉取请求,执行构建和测试,另一个workflow在每次创建发布时部署应用程序,还有另一个workflow在每次有人打开新问题时添加标签。

workflow 可以互相引用,请参阅 Reusing workflows

Event

eventrepo中触发workflow运行的特定活动。活动可能源自 GitHub,例如,当有人创建拉取请求、打开 issue 或将提交推送到repo

也可以通过执行定时任务、调用 github REST API 或者手动触发workflow的执行。

Jobs

jobworkflow中在同一runner上执行的一组step

每个step要么是一个将要执行的 shell 脚本,要么是一个将要运行的actionstep按顺序执行并且相互依赖。由于每个step都在同一个runner上执行,因此 step 直接拿可以共享数据。例如,可以有一个构建应用程序的step,然后是一个测试已构建应用程序的step

可以配置一个job间的依赖关系;默认情况下,job没有依赖关系并且彼此并行运行。 例如,可能有多个不同架构的build jobs,它们之间没有依赖关系,但是packaging jobs依赖它们。packaging job等待build jobs全部运行完成后才会运行。

Actions

action是 GitHub Actions 平台的自定义应用程序,它执行复杂但经常重复的任务。action可用来拉取repo,为构建环境设置正确的工具链,或设置对云提供商的身份验证。

可以编写自己的action,也可以在 GitHub Marketplace 中找到想要的action。详见 Finding and customizing actions

通过action来减少workflow文件中的重复代码。

Runners

runner是运行workflow的服务器。 每个runner一次可以运行一个job。 GitHub 提供 Ubuntu Linux、Microsoft Windows 和 macOS 来运行workflow; 每个workflow运行都在一个全新的、新配置的虚拟机中执行。 如果需要不同的操作系统或需要特定的硬件配置,可以托管自己的runner

示例

参考 Create an example workflow

cache

为了使 workflow 更快、更高效,可以为依赖项(比如 go module)和其他经常重用的文件创建和使用缓存。详见 Caching dependencies to speed up workflows

deploy

About continuous deployment

参考