diff --git a/docs/BUG_HISTORY.md b/docs/BUG_HISTORY.md index 3219f58c..bb79769d 100644 --- a/docs/BUG_HISTORY.md +++ b/docs/BUG_HISTORY.md @@ -13170,7 +13170,7 @@ ## BUG-994 | staging 迁移拉 digest 镜像时 containerd 磁盘写满 -- 状态:investigating +- 状态:resolved - 首次发现:2026-09-21 - 最近更新:2026-09-21 - 影响面:`deploy/run-staging-migration.sh`、`deploy/run-staging-deploy.sh`、staging 主机 Docker 镜像层、`migrate-staging-database` run 2841 @@ -13178,8 +13178,8 @@ - 触发条件:向 staging 推送会触发门禁的改动后,publish 派发 `migrate-staging-database`,主机再拉一枚新的 exact-SHA web 镜像。 - 根因:每次部署留下不可变 digest 镜像,脚本在 pull 前不回收未使用镜像。run 2841 在 `Apply digest-pinned migration under host lock` 拉 `copse/jyotisha@sha256:a00887de…` 时,containerd ingest 报 `write /var/lib/containerd/io.containerd.content.v1.content/ingest/631c40bfaf7318a3ce6ca6ead3b0f8ce0eb25e2a2e93851c76bfc9eb5060c25d/data: no space left on device`。门禁 runner 的 `reclaim-runner-disk.sh` 只管构建机,不管 staging 主机。 - 修复:迁移与部署脚本在 pull 前打印 `docker system df`,执行 `image prune --force` 再 `image prune --all --force`。正在跑的 `jyotisha-staging` 容器会保住当前层。禁止 `volume prune`,避免误删 Postgres 数据卷。 -- 验证:源码合同 `staging-backend-workflows.test.ts` 锁定 prune 出现在 pull 之前且不得 `volume prune`。端到端证据待本轮门禁的 migrate / deploy 转绿;转绿前不得标 resolved。 +- 验证:源码合同 `staging-backend-workflows.test.ts` 锁定 prune 出现在 pull 之前且不得 `volume prune --`。门禁 run **2842** 全绿。migrate run **2843** 在 pull 前 `Images 166 / 77.64GB / reclaimable 70GB`,`image prune --all` 回收 **75.38GB** 后剩 4 张在用镜像,随后 digest pull 成功、`无待应用迁移`。deploy run **2844** `verified_sha=a06829b3`。`GET /api/health` 的 `deployment.gitCommit` = `a06829b3`,八项 check 全 ok。staging 其后仅文档前进到 `26c1fbc6`(BUG-995 任务书)。 - 防复发:staging 主机拉 digest 前必须先回收未使用镜像。不得用 `volume prune` 换磁盘。 - 相关记录:BUG-150、BUG-993 - 复发自:无 -- 修复版本:待本轮含 prune-before-pull 的提交合入 staging 且 migrate 转绿 +- 修复版本:`a06829b3`(staging 已部署;migrate 2843 / deploy 2844)