← 中文资源

简体中文版本

时间压力下的热修发布工作流

用压缩路径发紧急修复,但守住不可妥协项:最小 diff 评审、一次冒烟、回植 main。

阅读英文原文

目标

热修流程在两个相反的方向上失败:把每次着急都当紧急事件,或真紧急来临时放弃所有检查。本工作流保住三件不可妥协的事——最小 diff、三道压缩门禁、回植 main——其余全部压缩,让速度来自范围纪律而不是来自跳过安全。

步骤要点

  1. 先资格审查:确认问题够得上热修门槛(生产影响、无规避方案),并记录授权的事件或工单编号。
  2. 写最小 diff:只改消除故障所必需的内容,清理与顺手优化一律延后,含测试通常不超过五十行。
  3. 跑压缩门禁:受影响区域的定向测试、一次完整冒烟、涉鉴权或输入时加安全检查,三个运行 ID 入档。
  4. 单人聚焦评审:一位资深评审专注于影响半径与回滚安全,同一趟批准 diff 与回滚步骤。
  5. 部署后对着事件指标验证恢复,随即把修复 cherry-pick 回 main 并附热修记录链接。

排错提示

热修分支越积越厚说明最小 diff 纪律失守,恢复“只修故障本身”的约束并把顺带改动开成普通 PR;评审在慌乱中被跳过是最常见的塌方点,把“回滚方案获批”设为部署前置条件;修复合并进 main 前发布窗口关闭时,用日历提醒跟进回植,防止生产与主干永久分叉。

适用边界

压缩门禁仍需数十分钟,极端秒级故障应依赖回滚而非热修;单人评审换取速度,热修后应安排事后补审,把紧急中放过的风格与设计问题清偿。

代码示例

hotfix-2026-10-22-01  (auth timeout regression)
  authorization: INC-2841 (sev1)
  diff:         31 lines (12 code, 19 test)
  gates:
    targeted suite   run #4912  PASS  (28 tests)
    full smoke       run #4913  PASS  (14 endpoints)
    security check   PASS      (touch: auth input)
  review:        senior@eng, rollback approved
  deploy:        16:41Z  rollback: redeploy v1.7.3 tag
  metric:        auth success 71% -> 99.2% (17 min)
  forward-port:  main 7ab9e2 (17:05Z)