标准答案

  1. 每次发布应有唯一 release id,可以由版本号、构建号、commit sha 或时间戳组成。
  2. 构建产物、source map、监控 SDK、错误日志和部署记录要使用同一个 release id。
  3. changelog 应说明本次改动、风险点、回滚方式和影响范围。
  4. 线上报错时可以通过 release id 找到对应 commit、构建任务、负责人和变更内容。
  5. 回滚时要恢复匹配的 HTML、静态资源、配置和 source map。

题目解析

没有版本关联时,线上报错只能看到一个 hash 文件或一段压缩栈,很难知道是哪次发布引入的。release id 是贯穿构建、发布和观测的线索。

changelog 不只是给用户看的更新说明。内部 changelog 还要服务排障:这次改了哪些入口、依赖、配置、接口和灰度规则。

前端发布尤其要注意静态资源和 source map 对齐。错误上报的 release 和上传 source map 的 release 不一致,源码还原就会失败。

常见误区

  • 构建产物只有文件 hash,没有 release、commit 和发布记录。
  • 监控平台、source map 上传和部署系统使用不同版本号。
  • changelog 只写“优化体验、修复问题”,无法支持排障。

作者信息