fix(pikaoa): render test database search path

This commit is contained in:
Codex
2026-07-14 21:01:02 +02:00
parent edb597a2cc
commit bc6285a892
4 changed files with 79 additions and 2 deletions
+6 -1
View File
@@ -50,6 +50,10 @@ bun scripts/cli.ts pikaoa test-target stop --target <id> --instance <run-id> --c
- `delivery.targets.*.ci.namespace`
- 测试入口不得渲染或删除保护集合中的任何对象。
- PostgreSQL 使用 namespace 内的临时存储,namespace 删除后测试数据随之清理。
- 临时数据库连接只由 target YAML 渲染:
- `database.name``database.username``database.schema` 都是必填 PostgreSQL identifier
- renderer 使用结构化 URL 参数写入 `sslmode``search_path`,不提供隐藏 schema 默认值;
- 缺少 schema 或形状不合法时,在任何 route 调用前返回具名配置错误。
- 附件运行参数与 namespace 内的临时 PVC 来自 target YAML
- `runtime.attachment.storageRoot``runtime.attachment.maxBytes` 直接写入严格 runtime YAML
- PVC 名称、容量、StorageClass 和 access mode 只从同一 target 声明读取;
@@ -69,10 +73,11 @@ bun scripts/cli.ts pikaoa test-target stop --target <id> --instance <run-id> --c
- Secret 值只从 YAML `sourceRef` 读取并写入目标 Secret。
- CLI 输出只显示 `sourceRef``targetKey`、presence 和 fingerprint,始终保持 `valuesPrinted=false`
- `plan` 的数据库投影只显示 schema 和 DSN 参数 presence,不显示完整 DSN、用户名、密码或参数值。
- 含 Secret 的 runner 文件使用 owner-only 权限,运行后立即删除;manifest 只在 runner 的临时目录存活,终态前由 trap 清理。
- 状态和事件只记录公开 ID、阶段、typed code 和时间,不保存命令 stderr、DSN、manifest 正文或 Secret 值。
- Secret 缺失会在连接测试集群前阻塞 `start`
- API 和 Worker 从同一 Secret 挂载严格的 PikaOA runtime YAML。
- 迁移 Job、API 和 Worker 从同一 Secret key 挂载严格的 PikaOA runtime YAML,数据库 schema 与 `search_path` 因此保持一致
- OTel endpoint、Prometheus scrape、指标路径和探针全部由 target YAML 声明。
- 配置一致性、镜像/commit 漂移和 OTel exporter 失败只产生 `blocking=false` warning,不作为 MVP 门禁。