第 6 章 工作流
让本地分支、云端触发、持续集成与持续交付晋级同一构建产物;用体系节点、故障轨迹和发布门完成独立复核。
学习目标
- 能说明“第 6 章 工作流”如何让本地分支、云端触发、持续集成与持续交付晋级同一构建产物,并保持2018原书目录与现代技术对照的边界
- 能先预测“怎样消除二次构建,让测试、预发和生产验证的是同一个产物身份?”的正常路径,再沿输入、动作、产物和责任逐阶段核对
- 能注入“测试通过后在生产环境重新安装依赖并构建,导致上线对象不是被验证对象”,用“每个环境只改变外部配置,不重新解释源代码或重新生成应用产物”决定接受、缩小或拒绝交付
为什么从这个交付任务开始
工作流页把二次构建视为证据断点:测试对象和生产对象若不是同一不可变产物,即使两次都来自同一提交,也可能因依赖或环境变化而不同。 “第 6 章 工作流”使用的贯穿任务是:Git分支事件通过WebHook触发CI,产物先进入测试沙箱再晋级生产;团队要证明三个环境共享一个哈希。 操作前先预测哪个阶段最先产生差异,运行后再补解释不算预测。
本页围绕“怎样消除二次构建,让测试、预发和生产验证的是同一个产物身份?”建立正常、故障与恢复路径。只有“第 6 章 工作流”保持“每个环境只改变外部配置,不重新解释源代码或重新生成应用产物”并交付提交SHA、触发事件、依赖锁、测试结果、产物哈希、签名或校验、环境配置、审批与晋级记录。,工具运行结果才构成工程证据。
书目、98条目与时代边界
“第 6 章 工作流”以豆瓣书目与完整目录核对周俊鹏著、电子工业出版社、2018年1月、224页、ISBN 9787121330902和七章结构;天瓏书店目录为“第 6 章 工作流”提供第二份逐节顺序核对。公开材料合计列出98个章、节和小节层级条目,课程不把现代对照增列为原书章节。
“第 6 章 工作流”当前只能取得书目简介与详细目录,没有可授权逐段改写的完整正文。本页的解释、架构、交互、练习和答案均为独立教学重写;webpack、Yeoman、Node.js等名称按2018目录定位,现代文档不反向证明原书当年的具体版本行为。
“第 6 章 工作流”另以技术核对 1、技术核对 2核对技术事实。对本页而言,Node、webpack、Babel、PostCSS、Git或WebHook文档说明当前机制;2022年的RFC 9111是HTTP缓存的现代标准,不能冒充2018年原书引用的历史规范。现代Vite、Module Federation、TypeScript测试体系或RUM若出现,只能标为迁移讨论,不能改写98条目分母。
公开目录条目与工程机制
第6章 工作流
↡工作流对应目录条目“第6章 工作流”,在“第 6 章 工作流”中用于封闭该章职责与证据,并受版本、产物与责任边界约束。公开坐标 1/9。 在“第 6 章 工作流”的条目1中,第6章 工作流用于封闭该章职责与证据;先声明工程输入与责任人,再用正式条目和相邻章节复核产物,出现跨章任意混排时不能继续交付。
6.1 本地工作流
↡本地工作流对应目录条目“6.1 本地工作流”,在“第 6 章 工作流”中用于让验证对象直接晋级,并受版本、产物与责任边界约束。公开坐标 2/9。 6.1 本地工作流进入“第 6 章 工作流”后要回答第2张证据卡:它怎样让验证对象直接晋级、向下一阶段交付什么、由哪些提交、产物哈希和环境证明,并怎样排除环境内重新构建。
6.1.1 二次构建的隐患
↡二次构建的隐患对应目录条目“6.1.1 二次构建的隐患”,在“第 6 章 工作流”中用于让验证对象直接晋级,并受版本、产物与责任边界约束。公开坐标 3/9。 围绕“怎样消除二次构建,让测试、预发和生产验证的是同一个产物身份?”,坐标3把6.1.1 二次构建的隐患解释为让验证对象直接晋级;独立复核者先读取提交、产物哈希和环境再判断工程状态,不能接受环境内重新构建这种捷径。
6.1.2 代码分离与测试沙箱
↡代码分离与测试沙箱对应目录条目“6.1.2 代码分离与测试沙箱”,在“第 6 章 工作流”中用于让验证对象直接晋级,并受版本、产物与责任边界约束。公开坐标 4/9。 对“第 6 章 工作流”而言,6.1.2 代码分离与测试沙箱的最小合同是让验证对象直接晋级,第4次检查保存提交、产物哈希和环境;若产生环境内重新构建,就回到上游版本和契约重新验证。
6.2 云平台工作流
↡云平台工作流对应目录条目“6.2 云平台工作流”,在“第 6 章 工作流”中用于用版本事件触发可审计运行,并受版本、产物与责任边界约束。公开坐标 5/9。 第5个公开条目6.2 云平台工作流服务于让本地分支、云端触发、持续集成与持续交付晋级同一构建产物,需要以SHA、事件和运行ID呈现用版本事件触发可审计运行;未验证事件直接部署会破坏“每个环境只改变外部配置,不重新解释源代码或重新生成应用产物”,因此属于拒绝条件。
6.2.1 GitFlow与版本管理
↡GitFlow与版本管理对应目录条目“6.2.1 GitFlow与版本管理”,在“第 6 章 工作流”中用于用版本事件触发可审计运行,并受版本、产物与责任边界约束。公开坐标 6/9。 学习者在“第 6 章 工作流”中讨论6.2.1 GitFlow与版本管理前预测用版本事件触发可审计运行会改变哪项工程状态,再读取SHA、事件和运行ID;观察到未验证事件直接部署时必须恢复已知产物,不能移动验收标准。
6.2.2 WebHook与自动构建
↡WebHook与自动构建对应目录条目“6.2.2 WebHook与自动构建”,在“第 6 章 工作流”中用于用版本事件触发可审计运行,并受版本、产物与责任边界约束。公开坐标 7/9。 Git分支事件通过WebHook触发CI,产物先进入测试沙箱再晋级生产;团队要证明三个环境共享一个哈希。 在条目7处理6.2.2 WebHook与自动构建时,要把用版本事件触发可审计运行写进流水线,把SHA、事件和运行ID写进运行记录,并把未验证事件直接部署写进失败样本。
6.3 持续集成与持续交付
↡持续集成与持续交付对应目录条目“6.3 持续集成与持续交付”,在“第 6 章 工作流”中用于自动验证并晋级不可变产物,并受版本、产物与责任边界约束。公开坐标 8/9。 “每个环境只改变外部配置,不重新解释源代码或重新生成应用产物”限定了6.3 持续集成与持续交付的适用域:条目8只能通过自动验证并晋级不可变产物推进交付,由测试、制品和批准复核,而通过等同自动上线构成反事实检查。
6.4 总结
↡总结对应目录条目“6.4 总结”,在“第 6 章 工作流”中用于封闭该章职责与证据,并受版本、产物与责任边界约束。公开坐标 9/9。 在“第 6 章 工作流”的条目9中,6.4 总结用于封闭该章职责与证据;先声明工程输入与责任人,再用正式条目和相邻章节复核产物,出现跨章任意混排时不能继续交付。
先预测,再操作三个工程实验
1. 体系节点与交付契约
逐个选择“Git事件、WebHook、CI运行、产物仓库、环境晋级”,核对输入、动作、输出和门禁怎样连接“第 6 章 工作流”。
体系节点
从版本化输入走到可晋级产物
怎样消除二次构建,让测试、预发和生产验证的是同一个产物身份?
版本化输入
“第 6 章 工作流”的Git事件读取已版本化需求、模板或源码。
工程动作
按提交与分支触发处理Git事件,不得读取未声明的可变输入。
可验证输出
Git事件输出带版本、哈希或运行ID的工程证据,供下一节点验证。
晋级门
若发生“测试通过后在生产环境重新安装依赖并构建,导致上线对象不是被验证对象”,Git事件必须停止而非越过“每个环境只改变外部配置,不重新解释源代码或重新生成应用产物”。
公开目录坐标:第6章 工作流、6.1 本地工作流、6.1.1 二次构建的隐患、6.1.2 代码分离与测试沙箱、6.2 云平台工作流、6.2.1 GitFlow与版本管理、6.2.2 WebHook与自动构建、6.3 持续集成与持续交付、6.4 总结
第 6 章 工作流的可重放交付协议
| 阶段 | 工程动作 | 必留证据 | 拒绝条件 |
|---|---|---|---|
| 提交与分支触发 | 按提交与分支触发处理Git事件,不得读取未声明的可变输入。 | 提交、依赖、模板与配置版本 | 输入版本不完整 |
| 一次构建和测试 | 按一次构建和测试处理WebHook,不得读取未声明的可变输入。 | 运行ID、测试、清单与产物哈希 | 测试通过后在生产环境重新安装依赖并构建,导致上线对象不是被验证对象 |
| 产物晋级与持续交付 | 按产物晋级与持续交付处理CI运行,不得读取未声明的可变输入。 | 审批、环境、入口与回滚目标 | 无法返回已验证产物 |
unit: "feng-unit-06"
question: "怎样消除二次构建,让测试、预发和生产验证的是同一个产物身份?"
scenario: "Git分支事件通过WebHook触发CI,产物先进入测试沙箱再晋级生产;团队要证明三个环境共享一个哈希。"
nodes: ["Git事件", "WebHook", "CI运行", "产物仓库", "环境晋级"]
stages: ["提交与分支触发", "一次构建和测试", "产物晋级与持续交付"]
invariant: "每个环境只改变外部配置,不重新解释源代码或重新生成应用产物"
fault: "测试通过后在生产环境重新安装依赖并构建,导致上线对象不是被验证对象"
evidence: "提交SHA、触发事件、依赖锁、测试结果、产物哈希、签名或校验、环境配置、审批与晋级记录。"
reset: restore_node_mode_step_gates_and_artifact该协议要求“第 6 章 工作流”在相同提交、依赖锁、配置和外部服务下重放。重置后若节点、执行位置或发布门没有回到基线,交互状态已经污染比较,不能作为工程证据。
本页回顾
掌握“第 6 章 工作流”不是记住工具命令,而是能围绕“怎样消除二次构建,让测试、预发和生产验证的是同一个产物身份?”重建工程状态,并用“每个环境只改变外部配置,不重新解释源代码或重新生成应用产物”拒绝“测试通过后在生产环境重新安装依赖并构建,导致上线对象不是被验证对象”。最终交付为提交SHA、触发事件、依赖锁、测试结果、产物哈希、签名或校验、环境配置、审批与晋级记录。
练习与答案
练习
- 问题 1:工程合同。 “第 6 章 工作流”为什么必须先声明提交、依赖、配置与责任边界?
- 问题 2:目录逐项覆盖。 怎样证明公开条目已经进入机制、交互和练习?
- 问题 3:故障恢复。 怎样证明“测试通过后在生产环境重新安装依赖并构建,导致上线对象不是被验证对象”已经被修正?
名词解释
名词解释
本章出现的专业名词,用大白话再讲一遍。
- 工作流
对应“第6章 工作流”;在“第 6 章 工作流”中用于封闭该章职责与证据,需要连接输入、产物、版本与责任。
- 本地工作流
对应“6.1 本地工作流”;在“第 6 章 工作流”中用于让验证对象直接晋级,需要连接输入、产物、版本与责任。
- 二次构建的隐患
对应“6.1.1 二次构建的隐患”;在“第 6 章 工作流”中用于让验证对象直接晋级,需要连接输入、产物、版本与责任。
- 代码分离与测试沙箱
对应“6.1.2 代码分离与测试沙箱”;在“第 6 章 工作流”中用于让验证对象直接晋级,需要连接输入、产物、版本与责任。
- 云平台工作流
对应“6.2 云平台工作流”;在“第 6 章 工作流”中用于用版本事件触发可审计运行,需要连接输入、产物、版本与责任。
- GitFlow与版本管理
对应“6.2.1 GitFlow与版本管理”;在“第 6 章 工作流”中用于用版本事件触发可审计运行,需要连接输入、产物、版本与责任。
- WebHook与自动构建
对应“6.2.2 WebHook与自动构建”;在“第 6 章 工作流”中用于用版本事件触发可审计运行,需要连接输入、产物、版本与责任。
- 持续集成与持续交付
对应“6.3 持续集成与持续交付”;在“第 6 章 工作流”中用于自动验证并晋级不可变产物,需要连接输入、产物、版本与责任。
- 总结
对应“6.4 总结”;在“第 6 章 工作流”中用于封闭该章职责与证据,需要连接输入、产物、版本与责任。