【GitHub Workflows 基础(二)】深入理解 on、jobs、steps 的核心语法与执行逻辑
📘 GitHub Workflows 基础(二):深入理解 on
、jobs
、steps
的核心语法与执行逻辑
继第一篇讲完
.github/workflows/
中多个工作流的结构后,本篇将深入 GitHub Actions 的核心三要素:on
(触发器)、jobs
(任务)、steps
(步骤),带你彻底搞懂它的执行流程、语法规则与灵活写法。
🧩 一、Workflow 的结构复习
每一个 .yml
文件都是一个完整的工作流(workflow),它的基本结构如下:
name: 工作流名称on: # 👈 触发条件push:branches: [main]jobs: # 👇 工作流任务build:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v4- run: echo "Hello World"
⏰ 二、on
:定义何时触发
on:
是 GitHub Actions 的“启动器”——定义这个 workflow 应该在什么事件发生时启动。
✅ 常见写法
on: push # 推送时触发
on: pull_request # PR 时触发
on: workflow_dispatch # 手动触发(按钮)
✅ 进阶配置
指定分支:
on:push:branches: [main, dev]
指定文件变化:
on:push:paths:- 'src/**'- '!docs/**'
多种触发器:
on:push:pull_request:
📌 你可以组合不同触发器,一个 workflow 可以监听多个事件。
🧱 三、jobs
:任务组,真正的工作发生地
每个 jobs
就是一个“任务集合”,可以有多个 job 并行或顺序执行。
基本结构
jobs:build:runs-on: ubuntu-lateststeps:...
build
是这个 job 的 IDruns-on
是运行环境(如 ubuntu、windows、macOS)- 一个 job 包含多个 step,每个 step 是一个命令或 action
🧩 四、steps
:构成 job 的每一个步骤
每个 job 的步骤通过 steps:
列出,按顺序执行,就像命令行里一行一行敲的命令。
两种类型的步骤:
1. 使用已有 action:
- uses: actions/checkout@v4 # 拉取代码
- uses: actions/setup-node@v4with:node-version: 18
2. 自定义 shell 命令:
- run: echo "开始构建项目"
- run: npm install && npm run build
📌 run:
相当于写一条 shell 命令。你可以写一行,也可以像脚本一样多行:
- name: 安装并构建run: |npm cinpm run build
🔁 五、多个 Job 的依赖与串联
默认情况下,多个 job 是并行执行的,但你可以使用 needs:
实现前后顺序。
示例:先 build 再 deploy
jobs:build:runs-on: ubuntu-lateststeps:- run: echo "构建中..."deploy:needs: build # ✅ 表示必须等 build 执行完runs-on: ubuntu-lateststeps:- run: echo "部署中..."
这样可以避免部署提前触发,确保顺序正确。
🔐 六、使用 Secrets 和变量
GitHub Actions 支持读取环境变量和仓库的 Secret 值。
✅ 使用 Secrets
- run: echo "${{ secrets.MY_SECRET_KEY }}"
Secrets 可以在仓库 → Settings → Secrets 中配置,用于保存:
- API Key
- token
- 密码等敏感信息
✅ 自定义环境变量
env:NODE_ENV: production
也可以在 jobs
或 steps
中设置。
🧪 七、实践示例:构建并部署网站
name: Build and Deployon:push:branches: [main]jobs:build:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v4- uses: actions/setup-node@v4with:node-version: 18- run: npm install- run: npm run build- uses: actions/upload-pages-artifact@v2with:path: distdeploy:needs: buildruns-on: ubuntu-lateststeps:- uses: actions/deploy-pages@v3
📌 总结思维图
workflow
├── name: 工作流名称
├── on: 触发器
└── jobs:├── job1:│ ├── runs-on│ └── steps: [uses, run]└── job2:├── needs: job1└── steps
🏁 总结一句话
on
决定何时触发,jobs
定义做哪些事,steps
写出每个动作。GitHub Actions 就是一个小型 CI 系统,让你用 YAML 编排自动化流程。
🔮 下一篇预告
👉 《GitHub Workflows 基础(三):深入理解 artifact、缓存、并发与条件执行》