标准答案
- 每次发布应有唯一 release id,可以由版本号、构建号、commit sha 或时间戳组成。
- 构建产物、source map、监控 SDK、错误日志和部署记录要使用同一个 release id。
- changelog 应说明本次改动、风险点、回滚方式和影响范围。
- 线上报错时可以通过 release id 找到对应 commit、构建任务、负责人和变更内容。
- 回滚时要恢复匹配的 HTML、静态资源、配置和 source map。
题目解析
没有版本关联时,线上报错只能看到一个 hash 文件或一段压缩栈,很难知道是哪次发布引入的。release id 是贯穿构建、发布和观测的线索。
changelog 不只是给用户看的更新说明。内部 changelog 还要服务排障:这次改了哪些入口、依赖、配置、接口和灰度规则。
前端发布尤其要注意静态资源和 source map 对齐。错误上报的 release 和上传 source map 的 release 不一致,源码还原就会失败。
常见误区
- 构建产物只有文件 hash,没有 release、commit 和发布记录。
- 监控平台、source map 上传和部署系统使用不同版本号。
- changelog 只写“优化体验、修复问题”,无法支持排障。