diff --git a/doc/dev/P0复盘.md b/doc/dev/P0复盘.md index ee83220..f61e1e8 100644 --- a/doc/dev/P0复盘.md +++ b/doc/dev/P0复盘.md @@ -16,8 +16,13 @@ - **修复**: 1. Dockerfile 合并两个 apt 层为一次 update+install、装完即移除 snapshot 源、`Acquire::Languages=none`+`Retries=3` → 砍掉 QEMU 下的内存/网络峰值。**本机原生 arm64 构建 + 全套探针验证通过**; 2. `resolveInstanceImage()` 兜底:偏好的版本 tag 在本地和 registry 都不可达 → 回退 `:latest`,保证功能永不因版本错配而瘫痪(已运行时验证)。 -- **仍待办(未在本次)**:改用**原生 arm64 runner**(`ubuntu-24.04-arm`)替代 QEMU,从根上消除模拟内存问题并提速;matrix 失败应联动(实例发不出就别单独发面板)。 - **守则**:R1;门禁原则补充——**门禁必须覆盖所有发布架构**,不能只测 amd64。 +- **最终解决(v1.4.4)**:源精简只降概率、不治本——v1.4.3 又栽在 snapshot InRelease 的同类 OOM。确认根因是 + **QEMU 用户态模拟 apt 的内存天花板**(不确定触发),遂**彻底弃用 QEMU**:release.yml 重写为每个 (镜像×架构) + 在**原生 runner**(amd64=ubuntu-latest、arm64=ubuntu-24.04-arm,公开仓库免费)构建、按 digest 推 GHCR,再 + merge job 合成多架构 manifest 打 tag(imagetools 顺带把 blob 复制到 Docker Hub)。教训:① 没直接发版赌运气, + 先 workflow_dispatch 验证流水线,当场逮到「github.repository_owner 含大写 Gloridust → docker ref 非法」—— + actionlint 查不出这类语义错,**只有真跑一遍才发现**;② 修完再验一轮全绿才发 v1.4.4。三次连环构建失败自此闭环。 ## 2026-07-07 · v1.4.0 CI 镜像浏览器实例仍黑屏(Chromium 150 漂移)