fix(cicd): 回退 PaC admission 业务阻断
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
# R4.1.1 任务报告
|
||||
|
||||
## 状态
|
||||
|
||||
- MDTODO:`R4.1.1`
|
||||
- GitHub issue:`pikasTech/unidesk#2039`
|
||||
- 状态:`in_progress`
|
||||
- 原因:源码修复与定向验证已完成,尚未合并 PR,也未执行合并后的 NC01 原入口运行面验收。
|
||||
|
||||
## 问题事实
|
||||
|
||||
- PR #1808 引入同名 `ValidatingAdmissionPolicy` 与 binding:
|
||||
- 使用 `failurePolicy: Fail`;
|
||||
- 使用 `validationActions: [Deny]`;
|
||||
- 阻断不满足 provenance CEL 的 PipelineRun 创建或更新。
|
||||
- PR #1812 继续收紧 watcher 的 queue transition:
|
||||
- 假定同一次 UPDATE 完成 `spec.status: PipelineRunPending -> absent`;
|
||||
- 同时完成 `state: queued -> started`。
|
||||
- NC01 官方 `pipelines-as-code-watcher` 的真实更新不满足该原子假定:
|
||||
- live `unidesk-pac-delivery-provenance-v2` 拒绝 watcher;
|
||||
- HWLAB `df925768` 与 AgentRun 自动队列停在 Pending。
|
||||
|
||||
## 本次语义回退
|
||||
|
||||
- owning YAML 将同名 v2 policy 改为 Kubernetes 原生 warning-only:
|
||||
- `failurePolicy: Ignore`;
|
||||
- `validationActions: [Warn, Audit]`。
|
||||
- 保留现有观察项的计算和披露:
|
||||
- CEL、marker、creator 与 ServiceAccount;
|
||||
- queue transition、spec/config SHA、版本与 resource epoch;
|
||||
- 默认 RBAC。
|
||||
- 上述观察项不再作为以下入口的阻断条件:
|
||||
- 业务 admission 与 bootstrap;
|
||||
- status、history 与 debug;
|
||||
- 外层 PaC delivery eligibility。
|
||||
- admission 与 consumer bootstrap 漂移统一输出结构化字段:
|
||||
- `blocking: false`;
|
||||
- `warning: true|false`;
|
||||
- `warnings` / `reasons`。
|
||||
- PaC bootstrap 的 `pac-admission` 阶段在 live identity 或 generation 尚未精确收敛时显示 `state: warning`,整体结果仍可成功。
|
||||
- 外层 GitHub/Gitea PaC push event 继续作为:
|
||||
- 唯一流水线触发;
|
||||
- 唯一 delivery authority。
|
||||
- admission exact identity 仅决定 `admissionProvenanceVerified` 与 warning,不再让已观察到的 outer event 失去 eligibility。
|
||||
|
||||
## 明确保留
|
||||
|
||||
- PR #1808 的 source artifact、三阶段 terminal、GitOps/status/history/debug 可观测性与无关后续改动。
|
||||
- YAML-owned policy/binding 名称 `unidesk-pac-delivery-provenance-v2`,以便受控 bootstrap 通过 server-side apply 原位收敛现有 live v2。
|
||||
- provenance、creator、marker、ServiceAccount、spec/config SHA、版本、epoch、RBAC 与 drift 的只读计算和结构化披露。
|
||||
- GitHub PR merge 继续作为唯一正式交付触发。
|
||||
- 未新增以下入口或机制:
|
||||
- PipelineRun、mirror、trigger、sync、flush、Argo sync 或 runtime patch;
|
||||
- 数据库迁移、合同、锁、租约、第二 authority 或 fallback。
|
||||
|
||||
## 定向验证
|
||||
|
||||
- `sh -n scripts/src/platform-infra-pipelines-as-code-remote.sh`
|
||||
- `bun test scripts/src/platform-infra-pac-provenance.test.ts scripts/src/platform-infra-pipelines-as-code-bootstrap.test.ts`
|
||||
- 结果:`23 pass, 0 fail, 234 expect()`。
|
||||
- `node` 调用 `runPacStatusFixtureChecks()`:
|
||||
- 结果:`ok=true, checks=34`。
|
||||
- `bun scripts/cli.ts platform-infra pipelines-as-code plan --target NC01`
|
||||
- 结果:YAML source-of-truth、single-path、Gitea source 与 runtime-zero-docker 策略均为 `true`。
|
||||
- `git diff --check`
|
||||
- 结果:通过。
|
||||
|
||||
## 合并后受控收敛
|
||||
|
||||
- 主代理在 PR 合并后先执行只读计划:
|
||||
- `bun scripts/cli.ts platform-infra pipelines-as-code bootstrap --target NC01 --consumer agentrun-nc01-v02 --dry-run`
|
||||
- 确认计划只体现 owning YAML 的同名 v2 warning-only 收敛后,再执行:
|
||||
- `bun scripts/cli.ts platform-infra pipelines-as-code bootstrap --target NC01 --consumer agentrun-nc01-v02 --confirm`
|
||||
- 不需要 prune:policy 与 binding 名称保持不变,bootstrap 使用 server-side apply 原位把 live `Fail/Deny` 更新为 `Ignore` 与 `Warn/Audit`。
|
||||
- bootstrap 不是流水线补跑入口;禁止随后人工执行 PipelineRun、mirror、trigger、sync、flush、Argo sync 或 runtime patch。
|
||||
- 运行面验收由主代理观察既有 merge 事件自动恢复,并通过原 `status`、`history` 与受影响 HWLAB/AgentRun 原入口完成。
|
||||
|
||||
## 当前阻塞
|
||||
|
||||
- 无源码或定向验证阻塞。
|
||||
- 运行面验收仍等待 PR 合并及主代理执行受控 bootstrap,因此任务保持 `in_progress`。
|
||||
Reference in New Issue
Block a user