第 17 天:持续交付中的 Harness——CI/CD、发布策略、质量门禁、自动回滚

SDD+Harness 四周学习计划 · Week 3 · Day 17

Posted by LSG on August 26, 2026

SDD + Harness 四周学习计划 · Week 3 · Day 17(工程化闭环第 3 课 / 全计划第 17 课)

今日主题:持续交付中的 Harness:CI/CD、金丝雀/蓝绿发布、Feature Flags、质量门禁、自动回滚

建议用时:60–90 分钟 | 前置:Day 16 规范即测试

输出物:一张「从 commit 到生产」的发布流水线图(自己画)+ 质量门禁五步清单


0. 一句话剧透

Day 16 说「规范即测试」——测试天然就是 CI/CD 里的门禁。今天把 Harness 从开发期护栏延伸到发布期护栏:CI/CD 把测试自动跑起来,蓝绿/金丝雀把发布变成可回退的渐进过程,Feature Flags 把「配置即发布」变成日常,质量门禁把不达标的版本挡在生产外,指标一异常就自动回滚。Harness 不再只管写代码的过程,开始管交付的全过程。


1. 今日目标(学完你能做到)

  • 能画出/说出 CI/CD 从 commit 到生产的完整链路
  • 能区分金丝雀发布与蓝绿发布,各说一个适用场景
  • 能说出 Feature Flags 能「配置即发布」什么(模型版本 / Prompt 模板 / 推理参数)
  • 能背出质量门禁的五步流程(lint+spec 校验 → 契约测试 → 烟雾测试 → 金丝雀验证 → 生产前人工 approval)
  • 能解释自动回滚的触发条件(指标异常 → 回退上一稳定版本)
  • 完成动手练:画自己的发布流水线图

2. 学习动线(建议时间分配)

步骤 内容 用时
1 第 3 节:从开发护栏到发布护栏(衔接 Day 16) 10 分钟
2 第 4 节:发布策略三件套(蓝绿 / 金丝雀 / Feature Flags) 25 分钟
3 第 5 节:质量门禁五步 + 文中数据 20 分钟
4 第 6 节:自动回滚 10 分钟
5 动手练(第 7 节):画流水线图 15 分钟
6 自测(第 8 节) 10 分钟

3. 从开发护栏到发布护栏

Week 2 的 Harness 管「代码怎么被写出来」:pre-commit hook 拦下没写 spec 的提交、Plan Mode 约束执行。但代码写完只是开始——怎么安全地把它送到生产? 这就是持续交付中的 Harness。

关键前提来自 Day 16:测试是从规范生成的(规范即测试),所以 CI/CD 可以放心用测试当门禁——测试通过 ≈ 实现符合规范,这个判断是自动化的、可重复的,不需要靠人肉 review。没有这层地基,CI/CD 只是「把不可靠的测试跑一遍」。


4. 发布策略三件套

已核验素材:蓝绿发布、金丝雀发布(如 10% 流量 30 分钟对比指标)、Feature Flags(配置即发布:模型版本 / Prompt 模板 / 推理参数)。

4.1 蓝绿发布

两套环境并行:蓝色(旧版本)和绿色(新版本)同时在线,流量整体切换。切换前绿色环境已完整验证,切换瞬间完成;出问题切回蓝色即可。

  • 优点:切换快、回滚快、版本间无灰度混合。
  • 代价:需要双倍资源(两套环境同时跑)。

4.2 金丝雀发布

渐进放量:先让新版本接收一小部分流量(如 10%),观察 30 分钟对比指标,确认没问题再逐步放量到 100%。

  • 优点:风险可控,用真实流量验证,出问题只影响少数用户。
  • 典型做法(已核验示例):10% 流量 + 30 分钟指标对比

4.3 Feature Flags(特性开关)

配置即发布:新功能默认关在开关后面,通过配置打开/关闭,不重新部署也能发布/回滚功能。对 AI 应用尤其关键——模型版本、Prompt 模板、推理参数都可以作为开关配置项,随时切换。

三者关系:蓝绿/金丝雀解决「代码版本怎么上线」,Feature Flags 解决「功能怎么开关」——可以组合使用。


5. 质量门禁:发布路上的五道检查

已核验的质量门禁流程(五步):

1
commit → ① lint + spec 校验 → ② 契约测试 → ③ 烟雾测试 → ④ 金丝雀验证 → ⑤ 生产前人工 approval → 上线
门禁 卡什么 呼应哪一天
① lint + spec 校验 代码风格 + 规范本身是否合法 Day 15 契约 / Week 2 hooks
② 契约测试 实现是否符合契约(规范即测试) Day 16
③ 烟雾测试 主路径能不能跑通 Day 18 实操
④ 金丝雀验证 真实流量下的指标对比 本日 4.2
⑤ 人工 approval 上线前最后一道人眼确认 团队流程

文中量化成果(已核验):契约测试 1000+ 用例、错误率 <0.1%——门禁不是摆设,是真实把错误率压下来的机制。


6. 自动回滚:最后一道安全网

即使过了五道门禁,生产环境仍可能出意外。自动回滚:部署后持续监控指标,指标异常时自动回退到上一稳定版本,不等人工介入。

与蓝绿发布配合最顺:切回蓝色环境即完成回滚;与金丝雀配合:发现异常先斩流量再回退。回滚是发布策略的一部分,不是事故后的补救。


7. 动手练(约 15 分钟)

画一张你自己的「从 commit 到生产」发布流水线图(ASCII 或文字箭头均可),要求包含:CI 阶段(lint + spec 校验 → 契约测试 → 烟雾测试)、发布阶段(金丝雀 / 蓝绿任选)、Feature Flags 开关、自动回滚触发点。存为 Week3-Day17-发布流水线.md,Day 21 周复盘要用。

参考画法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
commit
  │
  ▼
① lint + spec 校验 ──失败──▶ 打回(修 spec/代码)
  │
  ▼
② 契约测试 ──失败──▶ 打回
  │
  ▼
③ 烟雾测试 ──失败──▶ 打回
  │
  ▼
④ 金丝雀验证(10% 流量 30 分钟对比指标)──异常──▶ 自动回滚到上一稳定版本
  │ 正常
  ▼
⑤ 人工 approval → 全量上线
  │
  ▼
Feature Flags 随时开关新功能 / 切换模型版本·Prompt 模板·推理参数

8. 自测题

  1. 为什么「规范即测试」是 CI/CD 门禁能成立的前提?
  2. 蓝绿发布和金丝雀发布的区别?各适合什么场景?
  3. 文中金丝雀发布的示例参数是什么?
  4. Feature Flags 能配置即发布哪些东西(AI 应用场景)?
  5. 质量门禁五步的顺序是什么?
  6. 自动回滚的触发条件和动作是什么?
  7. lint+spec 校验和契约测试各自卡什么?

答案与提示

  1. 测试从规范生成、规范改动自动更新测试,所以「测试通过 ≈ 实现符合规范」是自动且可重复的判断,门禁才可信。
  2. 蓝绿:两套环境整体切换,回滚快但费资源;金丝雀:渐进放量用真实流量验证,风险小但过程长。
  3. 10% 流量、30 分钟对比指标。
  4. 模型版本、Prompt 模板、推理参数。
  5. lint+spec 校验 → 契约测试 → 烟雾测试 → 金丝雀验证 → 生产前人工 approval。
  6. 指标异常 → 自动回退到上一稳定版本。
  7. lint+spec 校验卡「代码风格与规范是否合法」;契约测试卡「实现是否符合契约」。

延伸阅读

  • 腾讯云《SDD 规范驱动 + Harness:AI 全栈开发从「能跑」到「可控」》(发布策略与门禁出处):https://cloud.tencent.com/developer/article/2703349
  • 掘金《AI 编程可闭环协作·卷三:Harness 与 SDD》(合并前自动检查等协作机制):https://juejin.cn/post/7647333934796537919

本工作纸依据《SDD+Harness四周学习计划.md》Day 17 主题编制。整理日期:2026-09-09