fix(cicd): 保留真实 PaC bootstrap 失败

This commit is contained in:
Codex
2026-07-15 08:52:20 +02:00
parent 1f3283ffac
commit 2b385f08f8
3 changed files with 22 additions and 28 deletions
@@ -177,6 +177,12 @@ test("PaC apply checks the Gitea repository before dry-run return and cluster mu
expect(remote).toContain('"admission":{"applied":%s,"ready":%s}');
expect(remote).toContain('"admissionProvenance":%s');
expect(remote).toContain('"error":"gitea-repository-missing"');
const statusAction = remote.slice(remote.indexOf("status_action() {"), remote.indexOf("history_action() {"));
expect(statusAction).toContain('[ "$bootstrap_ready" = "true" ]');
expect(statusAction).toContain("output.code = 'pac-consumer-bootstrap-not-ready'");
expect(statusAction).toContain("output.ok = false");
expect(statusAction).toContain("code: 'pac-admission-provenance-not-ready'");
expect(statusAction).toContain("blocking: false");
});
test("platform bootstrap help advertises the composite entry before low-level apply", async () => {
@@ -1612,37 +1612,26 @@ NODE
const diagnostics = JSON.parse(process.env.UNIDESK_PAC_DIAGNOSTICS || '{}');
const admissionProvenance = JSON.parse(process.env.UNIDESK_PAC_STATE || '{}');
const consumerBootstrap = JSON.parse(process.env.UNIDESK_PAC_BOOTSTRAP_STATE || '{}');
const output = { ...diagnostics, admissionProvenance, consumerBootstrap, valuesPrinted: false };
if (process.env.UNIDESK_PAC_DELIVERY_PROVENANCE_REQUIRED === '1' && admissionProvenance.ready !== true) {
process.stdout.write(JSON.stringify({
...diagnostics,
warnings: [...(Array.isArray(diagnostics.warnings) ? diagnostics.warnings : []), {
output.warnings = [...(Array.isArray(output.warnings) ? output.warnings : []), {
code: 'pac-admission-provenance-not-ready',
blocking: false,
hint: 'PaC admission policy, binding, desired RBAC, or live default-SA observation is drifted; delivery continues',
reasons: Array.isArray(admissionProvenance.reasons) ? admissionProvenance.reasons : [],
}],
admissionProvenance,
valuesPrinted: false,
}));
} else if (consumerBootstrap.configured === true && consumerBootstrap.ready !== true) {
process.stdout.write(JSON.stringify({
...diagnostics,
warnings: [...(Array.isArray(diagnostics.warnings) ? diagnostics.warnings : []), {
code: 'pac-consumer-bootstrap-not-ready',
blocking: false,
hint: 'declared runner ServiceAccount/RoleBinding or Argo repository credential is missing or drifted; status remains observable',
}],
admissionProvenance,
consumerBootstrap,
valuesPrinted: false,
}));
} else {
process.stdout.write(JSON.stringify({ ...diagnostics, admissionProvenance, consumerBootstrap, valuesPrinted: false }));
}];
}
if (consumerBootstrap.configured === true && consumerBootstrap.ready !== true) {
output.ok = false;
output.code = 'pac-consumer-bootstrap-not-ready';
output.phase = 'consumer-bootstrap-not-ready';
output.hint = 'declared runner ServiceAccount/RoleBinding or Argo repository credential is missing or drifted';
}
process.stdout.write(JSON.stringify(output));
NODE
)
printf '{"ok":%s,"crdPresent":%s,"controllerReady":"%s","admissionProvenance":%s,"consumerBootstrap":%s,"repository":{"name":"%s","repo":"%s/%s","url":"%s","condition":"%s"},"repositoryCondition":"%s","webhooks":%s,"pipelineRuns":%s,"taskRuns":%s,"artifact":%s,"argo":%s,"runtime":%s,"diagnostics":%s,"valuesPrinted":false}\n' \
"$( [ -n "$crd" ] && [ "$controller_ready" != "0/0" ] && echo true || echo false )" \
"$( [ -n "$crd" ] && [ "$controller_ready" != "0/0" ] && [ "$bootstrap_ready" = "true" ] && echo true || echo false )" \
"$( [ -n "$crd" ] && echo true || echo false )" \
"$(json_string "$controller_ready")" \
"$UNIDESK_PAC_ADMISSION_STATE_JSON" \