Appearance
ROM BadZipFile 打包失败
ROM 打包失败根因分析:6.1.2 错用了 6.2.0 的资源,Python zipfile 抛出 BadZipFile。
现象
Jenkins 打包流水线执行到 ROM 打包步骤时失败,报错:
BadZipFile: File is not a zip file排查过程
- 怀疑是 ZIP 生成逻辑有问题 → 本地复现正常
- 怀疑是 Python 版本差异 → 版本一致
- 检查输入文件 → 发现 6.1.2 分支的打包脚本读取了 6.2.0 分支的资源目录
- 根因确认:分支管理失误——6.1.2 的打包配置指向了 6.2.0 的资源路径
根因
打包脚本读取资源路径:
/build/6.2.0/resource/ ← 应该是 /build/6.1.2/resource/
6.2.0 资源目录下的文件格式变更 → 老的 ZIP 打包逻辑不兼容 → BadZipFile修复
- 修改打包配置,资源路径指向正确版本
- 建立分支管理规则:每周三、五统一 merge,避免跨版本引用
教训
- 分支管理的配置漂移是 CI/CD 最常见的问题
- 打包失败不要只查打包脚本——先查输入是否正确
- 分支隔离:每个版本的资源目录独立,不交叉引用
公开版深化
复盘定位
ROM BadZipFile 打包失败是事故与复盘中的事故治理样本。公开版关注根因链、排查顺序、止血动作和长期防线,不公开内部日志原文和未脱敏现场截图。
事故问题
ROM 打包失败根因分析:6.1.2 错用了 6.2.0 的资源,Python zipfile 抛出 BadZipFile。
这类页面必须证明一件事:问题不是被“修好了”就结束,而是被转化成可监控、可复现、可预防的工程规则。
复盘结构
| 环节 | 公开版要求 |
|---|---|
| 现象 | 用用户感知和系统风险描述影响 |
| 假设 | 记录排除路径,避免只写最终答案 |
| 根因 | 串成因果链,不停留在单点故障 |
| 处置 | 区分紧急止血和长期治理 |
| 防线 | 落到监控、QA、发布准入或工具链 |
指标与证据
- 无公开量化指标,保留方法论级证据
- 内部数字需脱敏后才进入公开页
复盘结论
事故复盘的企业级价值,在于让下一次类似问题更早被发现、更快被定位、更少依赖个人经验。
公开版深化
复盘定位
ROM BadZipFile 打包失败是事故与复盘中的事故治理样本。公开版关注根因链、排查顺序、止血动作和长期防线,不公开内部日志原文和未脱敏现场截图。
事故问题
ROM 打包失败根因分析:6.1.2 错用了 6.2.0 的资源,Python zipfile 抛出 BadZipFile。
这类页面必须证明一件事:问题不是被“修好了”就结束,而是被转化成可监控、可复现、可预防的工程规则。
复盘结构
| 环节 | 公开版要求 |
|---|---|
| 现象 | 用用户感知和系统风险描述影响 |
| 假设 | 记录排除路径,避免只写最终答案 |
| 根因 | 串成因果链,不停留在单点故障 |
| 处置 | 区分紧急止血和长期治理 |
| 防线 | 落到监控、QA、发布准入或工具链 |
指标与证据
- 无公开量化指标,保留方法论级证据
- 内部数字需脱敏后才进入公开页
复盘结论
事故复盘的企业级价值,在于让下一次类似问题更早被发现、更快被定位、更少依赖个人经验。
公开版深化
复盘定位
ROM BadZipFile 打包失败是事故与复盘中的事故治理样本。公开版关注根因链、排查顺序、止血动作和长期防线,不公开内部日志原文和未脱敏现场截图。
事故问题
ROM 打包失败根因分析:6.1.2 错用了 6.2.0 的资源,Python zipfile 抛出 BadZipFile。
这类页面必须证明一件事:问题不是被“修好了”就结束,而是被转化成可监控、可复现、可预防的工程规则。
复盘结构
| 环节 | 公开版要求 |
|---|---|
| 现象 | 用用户感知和系统风险描述影响 |
| 假设 | 记录排除路径,避免只写最终答案 |
| 根因 | 串成因果链,不停留在单点故障 |
| 处置 | 区分紧急止血和长期治理 |
| 防线 | 落到监控、QA、发布准入或工具链 |
指标与证据
- 无公开量化指标,保留方法论级证据
- 内部数字需脱敏后才进入公开页
复盘结论
事故复盘的企业级价值,在于让下一次类似问题更早被发现、更快被定位、更少依赖个人经验。