当前位置: 首页 > news >正文

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

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

继第一篇讲完 .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 的 ID
  • runs-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

也可以在 jobssteps 中设置。


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

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、缓存、并发与条件执行》

http://www.lryc.cn/news/603067.html

相关文章:

  • 【2025/07/28】GitHub 今日热门项目
  • 【iOS】类和分类的加载过程
  • LNMP架构+wordpress实现动静分离
  • Cacti RCE漏洞复现
  • 四、计算机组成原理——第1章:计算机系统概述
  • 可扩展架构模式——微服务架构最佳实践应该如何去做(方法篇)
  • 《汇编语言:基于X86处理器》第10章 结构和宏(2)
  • linux命令grep的实际应用
  • 在虚拟机ubuntu上修改framebuffer桌面不能显示图像
  • 1.vue体验
  • Android 媒体播放开发完全指南
  • Ansible提权sudo后执行报错
  • 电脑开机不显示网卡的原因
  • selenium 特殊场景处理
  • 刘润探展科大讯飞WAIC,讯飞医疗AI该咋看?
  • CSP-J 2022_第三题逻辑表达式
  • 技术工具箱 |五、一个避免头文件重复引用的 Python 脚本
  • 嵌入式Linux:注册线程清理处理函数
  • Zynq SOC FPGA嵌入式裸机设计和开发教程自学笔记:硬件编程原理、基于SDK库函数编程、软件固化
  • 第五章:进入Redis的Hash核心
  • 设计模式实战:自定义SpringIOC(亲手实践)
  • 深度研究——OpenAI Researcher Agent(使用OpenAI Agents SDK)
  • EAP(基于事件的异步编程模式)
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘papermill’问题
  • 时间数字转换器TDC的FPGA方案及核心代码
  • 将 NI Ettus USRP X410 的文件系统恢复出厂设置
  • C#:基于 EF Core Expression 的高性能动态查询构建实战 —— 面向大数据量环境的查询优化方案(全是干货,建议收藏)
  • Day22-二叉树的迭代遍历
  • 代码随想录Day32:动态规划(斐波那契数、爬楼梯、使用最小花费爬楼梯)
  • 10:00开始面试,10:06就出来了,问的问题有点变态。。。