当前位置: 首页 > 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.dtcms.com/a/302356.html

相关文章:

  • Dify快速搭建问答系统
  • 3、CC3200串口DMA
  • Binary Classifier Optimization for Large Language Model Alignment
  • 亚远景-“过度保守”还是“激进创新”?ISO/PAS 8800的99.9%安全阈值之争
  • Windows 11 系统 Docker详细安装教程并集成使用 Redis 官方详细教程
  • uniapp,uview icon加载太慢了,老是显示叉叉,将远程加载改到本地加载。
  • LangGraph实战:整合MCP(本地模式
  • 机器学习sklearn:不纯度与决策树构建
  • 数据中心入门学习(四):服务器概述与PCIe总线
  • 【学习笔记】AD7708/18(1)-理解官网的参考代码
  • python每日一题
  • 如何在 Apache Ignite 中创建和使用自定义 SQL 函数(Custom SQL Functions)
  • 生物信息学数据技能-学习系列001
  • 牛客网之华为机试题:坐标移动
  • 利用径向条形图探索华盛顿的徒步旅行
  • 数据分析干货| 衡石科技可视化创作之仪表盘控件如何设置
  • 开源智能体-JoyAgent集成ollama私有化模型
  • 【docker】DM8达梦数据库的docker-compose以及一些启动踩坑
  • 攻防世界-引导-Web_php_unserialize
  • Kafka单机如何多Broker实例集群搭建?
  • Python----大模型(基于Fastapi+gradio的对话机器人)
  • 降低焊接机器人保护气体消耗的措施
  • 递归算法的一些具体应用
  • 开发避坑短篇(6):Vue+window.print()打印实践
  • vue如何在data里使用this
  • android-屏幕-刷新流程
  • .NET AI从0开始入门 SemanticKernel 从基础到实践
  • 【GIS数据分享】建筑矢量数据带高度
  • 数据链路层 和 ARP协议
  • 最大连续子数组