Build/apply candidate images once, require digests on promote, and keep pinned env-service from rebuilding divergent images. Co-authored-by: Cursor <cursoragent@cursor.com>
2.6 KiB
2.6 KiB
Wave 2C:同 digest 镜像晋升测试报告
一、 测试背景 (Background)
Wave 2B 已交付 nightly + promotion receipt,但 test/main 仍可能 docker compose up --build 另造镜像。本轮收口 PU5B:候选 commit 一次构建(或等价 retag)、receipt 携带 digests、晋升 apply + pinned --no-build。
二、 测试目标 (Test Objectives)
- PASS receipt 含非空
image_digests(app/events/pi-agent) candidate-images-apply test后三服务 ImageID 与 receipt 一致--require-digests在缺 digest 时拒绝晋升- pinned 模式下
env-service使用--no-build
三、 测试方案与环境 (Test Plan & Environment)
| 项 | 值 |
|---|---|
| 分支 | feature/wave2c-same-image-digest |
| 基线 commit | 7c808bdcfced…(fixture 源) |
| 脚本 | candidate-images-{build,apply}.sh、promotion-receipt-{write,check}.sh、env-service.sh |
| Compose | docker-compose.test.yml / main.yml 支持 APP_IMAGE 等 |
四、 预期结果 (Expected Results)
- app/events 共用同一 candidate ID;pi-agent 独立 ID
- apply 后
shuimu-*-:testID 与 receipt 一致 - 空 digests 的 PASS → check BLOCKED
五、 实际测试结果与判定 (Actual Results & Evaluation)
C1 — require-digests PASS
- Input:images.json +
promotion-receipt-write --verdict pass+check --require-digests - Actual:
OK — PASS receipt for 7c808bdcfced - Verdict:PASS
C2 — apply test ID 一致
- Input:
./scripts/candidate-images-apply.sh test --commit 7c808bd… - Actual:
tagged shuimu-agent-app:test -> sha256:44c114af…
tagged shuimu-agent-events:test -> sha256:44c114af… (same as app)
tagged shuimu-pi-agent:test -> sha256:b8f9b525…
app PASS / events PASS / pi-agent PASS
- Verdict:PASS
C3 — 缺 digests 负例
- Input:fixture
ffff…PASS 且 digests 全 null +--require-digests - Actual:
BLOCKED — PASS receipt missing image_digests … app, events, pi-agent - Verdict:PASS
六、 自动化测试套件汇总 (Test Suite Execution)
合入冒烟(洁净环境):go vet ./...;go test -short ./...。
七、 测试结论与后续优化建议 (Conclusion & Next Steps)
- 结论:单机 same-image digest pin + 晋升钩子已交付;FEATURE-MATRIX Artifact 可标
done(注明无远程 registry)。 - 后续:Phase 2 Wave3 go/no-go;Phase 3 N7 U8 / Playwright 等遗留。
证据
.doc/test-reports/assets/promotion-receipts/7c808bd….json+.images.jsonconfigs/.env.test.images(本地 pin,gitignore)