# R6.1 任务报告

## 目标

修复 SELFMEDIA 生产首次 env-reuse cache miss 时，BuildKit 已推送镜像但在收尾返回 `context deadline exceeded`，导致 GitOps 阶段未执行的问题；保持自动交付，不用手工补跑。

## 现场根因

- 失败发布提交：`91c23dd0e45916336e03e65532dea7daa73b0323`。
- 失败 PipelineRun：`selfmedia-production-nc01-91c23dd0e45916336e03e65532dea7dacl775`。
- PipelineRun 178 秒后在 `image-build` exit 1。
- 日志证明 layers、config、manifest 和 registry push 已完成，digest 为 `sha256:b95b17386db89a5ba5e88a1990eeea8c182c9602d1902e52c78f8194b4e54be7`，随后最后一行才出现 `error: context deadline exceeded`。
- 旧生产运行面始终保持 Synced/Healthy，没有错误滚动。

## 实现

- GitHub issue：pikainc/selfmedia#56。
- Artificer 提交：`5bc294aab2d44371d6facf17228b763501da131c`。
- 开发 PR：pikainc/selfmedia#57。
- master 合并提交：`a97f87756923bf9c82dca9ff5d9956a603f068ff`。
- 生产 PR：pikainc/selfmedia#58。
- release 合并提交：`1b8117de839d6274535e43f17bd2fbb7114ba2a1`。
- `deploy/scripts/build-image.sh` 提取单一 POSIX sh 构建函数。
- 只有日志同时证明 layers 和 manifest 推送完成，且最后非空行是 deadline 错误时，才执行一次相同构建重试。
- 正常成功不重试；普通错误不重试；第二次失败原样失败；不把镜像存在当作成功。
- 没有新增阻塞校验；超过 120 秒仍只记非阻塞 warning 和 env-reuse hint。

## 验证

- `sh -n deploy/scripts/build-image.sh deploy/scripts/build-image.test.sh` 通过。
- 四类脚本测试通过：首次成功、特定 deadline 后重试成功、非目标错误不重试、第二次仍失败。
- 开发 PipelineRun：`selfmedia-nc01-a97f87756923bf9c82dca9ff5d9956a603f068ff-txkxm`，Succeeded，88 秒，env reuse hit。
- 开发阶段耗时：source 1 秒、identity 0 秒、image build 66 秒、GitOps 3 秒。
- 开发 GitOps revision：`15a48f1585abc45c7998ed504e0c7696482cddbb`。
- 开发 Argo：Synced/Healthy；运行镜像 digest：`sha256:7b267759a4f0db041dce82d08237ac58bd12d4784d650b2b492b79a2eb0f1125`；4317 健康。
- 生产 PipelineRun：`selfmedia-production-nc01-1b8117de839d6274535e43f17bd2fbb7j4w42`，Succeeded，59 秒。
- 生产阶段耗时：source 2 秒、identity 0 秒、image build 41 秒、GitOps 3 秒。
- 生产 GitOps revision：`b80059b19aeb4edf6b018c986f17e9d496915f1f`。
- 生产 Argo：Synced/Healthy；1/1；运行镜像 digest：`sha256:8b21258fc6aeb7ad353a7a84ac1dfd7b68e439f16e673910d9dabc4db4c19464`；4319 健康。

## 交付边界

全程只通过 PR merge 触发自动 PaC；没有手工 PipelineRun、Argo sync/refresh、Pod patch、mirror sync 或镜像/GitOps 补齐。
