工作流结构是什么
GitHub Actions 工作流文件位于 .github/workflows 目录,核心结构三件套:name(工作流名)、on(触发事件)、jobs(作业集合)。每个作业在自己的运行器(runs-on)上执行,步骤(steps)顺序进行:uses 调用现成动作,run 执行命令。作业之间默认并行,用 needs 构成依赖关系;跨作业传值靠 outputs。步骤任一失败即中止该作业(除非显式配置 continue-on-error)。
基本信息
| 位置 | .github/workflows 目录下的 yml 文件 |
|---|---|
| 核心键 | name、on、jobs |
| 作业内 | runs-on 选择运行器,steps 顺序执行 |
| 步骤类型 | uses 调用动作,run 执行命令 |
| 作业间 | 默认并行,needs 声明依赖,outputs 传值 |
典型使用场景
- 常规 CI:push 时跑构建与测试,pull_request 时验证合并结果。
- 多版本矩阵:strategy.matrix 展开多环境组合验证。
- 发布流水线:标签触发构建制品、推镜像、创建 Release。
- 定时任务:schedule 跑夜间巡检与依赖检查。
- 可复用工作流:公共流程抽成可被多仓库调用的工作流。
- 权限收紧:permissions 限定令牌范围,只在必要作业开放写权限。
- 环境部署:environment 绑定审批与保护规则,控制生产入口。
最小工作流
最小工作流
name: ci
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4 # 检出代码
- run: make build # 编译
test:
needs: build # 依赖构建作业
runs-on: ubuntu-latest
steps: [{run: make test}]步骤默认顺序执行、任一失败即中止该作业;跨作业协作通过 needs 与 outputs。
uses 引用的第三方动作以你仓库的凭据运行:安全要求高的仓库固定到完整提交 SHA,动作升级要评审。
permissions 按最小权限原则收敛:工作流或作业级别指定令牌范围,例如默认只给只读、部署作业才开写。
结构速记
- 一个工作流可含多个作业,作业之间默认并行;需要顺序或数据传递时显式写 needs 与 outputs。
- 步骤粒度是排查单元:把构建、测试、上传等职责拆成独立步骤,失败定位和重跑都更省力。
- 事件过滤写在 on 下:分支、路径与类型过滤能显著减少无关运行。
runs-on 选择运行器:托管运行器开箱即用,自托管运行器适合内网依赖与特殊硬件,用标签组合精确分发。