【GitHub Workflows 基础(二)】深入理解 on、jobs、steps 的核心语法与执行逻辑

发布于:2025-07-30 ⋅ 阅读:(21) ⋅ 点赞:(0)

📘 GitHub Workflows 基础(二):深入理解 onjobssteps 的核心语法与执行逻辑

继第一篇讲完 .github/workflows/ 中多个工作流的结构后,本篇将深入 GitHub Actions 的核心三要素:on(触发器)、jobs(任务)、steps(步骤),带你彻底搞懂它的执行流程、语法规则与灵活写法。


🧩 一、Workflow 的结构复习

每一个 .yml 文件都是一个完整的工作流(workflow),它的基本结构如下:

name: 工作流名称

on:  # 👈 触发条件
  push:
    branches: [main]

jobs:  # 👇 工作流任务
  build:
    runs-on: ubuntu-latest
    steps:
      - 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-latest
    steps:
      ...
  • build 是这个 job 的 ID
  • runs-on 是运行环境(如 ubuntu、windows、macOS)
  • 一个 job 包含多个 step,每个 step 是一个命令或 action

🧩 四、steps:构成 job 的每一个步骤

每个 job 的步骤通过 steps: 列出,按顺序执行,就像命令行里一行一行敲的命令。

两种类型的步骤:

1. 使用已有 action:
- uses: actions/checkout@v4  # 拉取代码
- uses: actions/setup-node@v4
  with:
    node-version: 18
2. 自定义 shell 命令:
- run: echo "开始构建项目"
- run: npm install && npm run build

📌 run: 相当于写一条 shell 命令。你可以写一行,也可以像脚本一样多行:

- name: 安装并构建
  run: |
    npm ci
    npm run build

🔁 五、多个 Job 的依赖与串联

默认情况下,多个 job 是并行执行的,但你可以使用 needs: 实现前后顺序。

示例:先 build 再 deploy

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - run: echo "构建中..."

  deploy:
    needs: build  # ✅ 表示必须等 build 执行完
    runs-on: ubuntu-latest
    steps:
      - run: echo "部署中..."

这样可以避免部署提前触发,确保顺序正确。


🔐 六、使用 Secrets 和变量

GitHub Actions 支持读取环境变量和仓库的 Secret 值。

✅ 使用 Secrets

- run: echo "${{ secrets.MY_SECRET_KEY }}"

Secrets 可以在仓库 → Settings → Secrets 中配置,用于保存:

  • API Key
  • token
  • 密码等敏感信息

✅ 自定义环境变量

env:
  NODE_ENV: production

也可以在 jobssteps 中设置。


🧪 七、实践示例:构建并部署网站

name: Build and Deploy

on:
  push:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 18
      - run: npm install
      - run: npm run build
      - uses: actions/upload-pages-artifact@v2
        with:
          path: dist

  deploy:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - 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、缓存、并发与条件执行》


网站公告

今日签到

点亮在社区的每一天
去签到