feat: 自动清理终态 Pod 执行器

This commit is contained in:
2026-09-21 05:24:38 +00:00
parent 2036584e80
commit be697a61cf
10 changed files with 155 additions and 9 deletions
+3 -2
View File
@@ -69,8 +69,9 @@ facade,并严格校验 facade 的 SPIFFE ID。这样无需修改 runner 或把
不新增数据库,也不依赖内存中的 runner-to-executor 映射。
- VM worker 使用 OpenSandbox 官方 Go SDK,并把 assignment ID、repository、job key 和
SPIFFE ID写入 sandbox metadata;通过 `extensions.poolRef=ci-vm` 使用既有 Kata Pool。
- 结果处理顺序固定为回报 Gitea、清理后端、ACK assignment;重投时先查询 Gitea 终态,
从而关闭后端已删除但消息尚未 ACK 的崩溃窗口。
- executor 成功 claim 后 ACK assignment。Gitea 接受 terminal update 后,facade 在后端
metadata 写入持久 terminal marker;backend reconciler 仅在执行环境也进入终态后清理,
从而关闭进程重启窗口且避免删除尚未完成结果上报的环境。
- pod 与 vm 使用独立 durable consumer 和并发上限。consumer 只负责将 assignment
幂等落到后端;executor 与身份恢复 metadata 持久化后立即 `DoubleAck`。尚未取得
Pod UID 等短暂未就绪状态以及临时后端错误使用延迟 NAK。