fix: bound PaC history JSON summaries
This commit is contained in:
@@ -295,6 +295,9 @@ bun scripts/cli.ts hwlab nodes control-plane legacy-cicd --help
|
||||
- 镜像构建、manifest/digest 和 push 仍可阻塞;
|
||||
- registry cache export 必须使用 BuildKit 原生 `ignore-error=true` 或等价非阻塞配置,禁止在镜像已成功发布后仅因 cache 写入抖动把 TaskRun 判失败。
|
||||
- PaC `status|closeout|history` 的 `--json` 是有界 machine contract;`--full` 展开单条详情,`--raw` 才展开目标侧原始 payload。`history --id --full` 不得重复嵌套同一 rows/consumer payload或依赖 `/tmp/unidesk-cli-output` 才可读。
|
||||
- `history --json` 默认 list 只保留 run id、consumer、时间、终态、耗时、完整 source commit、delivery class/owner、env reuse、trace、首断点、typed error、读取 observation、warning 和只读 next;
|
||||
- source observation、classification、artifact、collector 与 TaskRun 详情只进入 `--id` 精确下钻或显式 `--full|--raw`;
|
||||
- 默认 JSON 超过输出预算并退化成 `outputTruncated` 时,优先继续收紧 projector,不要求操作者使用临时 dump。
|
||||
- PaC `status` 必须在 `observability.readOnlyCapture.timeoutMs` 内完成:
|
||||
- 目标侧通过 `pac-status-progress` 披露最后阶段,CLI 将其投影为 `observation.remoteStage`;
|
||||
- PipelineRun 按 YAML 选中的 Repository CR label 做服务端 selector;TaskRun 与 Argo 原始对象各只读取一次并复用,禁止 status 为同一 run 串行读取每个 Pod 日志或重复读取 Argo;
|
||||
|
||||
@@ -2883,6 +2883,8 @@ function compactCloseoutJson(result: Record<string, unknown>): Record<string, un
|
||||
|
||||
export function compactHistoryJson(result: Record<string, unknown>, includeTaskDetails = false): Record<string, unknown> {
|
||||
const detailRequested = stringValue(result.detailId) !== "-";
|
||||
const deliveryBudget = record(result.deliveryBudget);
|
||||
const deliveryBudgetPolicy = record(deliveryBudget.policy);
|
||||
return {
|
||||
ok: result.ok === true,
|
||||
action: result.action,
|
||||
@@ -2891,7 +2893,13 @@ export function compactHistoryJson(result: Record<string, unknown>, includeTaskD
|
||||
config: result.config,
|
||||
consumers: result.consumers,
|
||||
detailId: result.detailId,
|
||||
deliveryBudget: result.deliveryBudget,
|
||||
deliveryBudget: {
|
||||
state: deliveryBudget.state,
|
||||
policy: { endToEndBudgetSeconds: deliveryBudgetPolicy.endToEndBudgetSeconds },
|
||||
exactCommand: deliveryBudget.exactCommand,
|
||||
blocking: deliveryBudget.blocking,
|
||||
mutation: false,
|
||||
},
|
||||
observation: result.observation,
|
||||
rows: arrayRecords(result.rows).map((row) => {
|
||||
const taskRuns = record(row.taskRuns);
|
||||
@@ -2901,67 +2909,70 @@ export function compactHistoryJson(result: Record<string, unknown>, includeTaskD
|
||||
return {
|
||||
id: row.id ?? row.pipelineRun,
|
||||
consumer: row.consumer,
|
||||
repo: row.repo,
|
||||
pipeline: row.pipeline,
|
||||
triggeredAt: row.triggeredAt,
|
||||
startTime: row.startTime,
|
||||
completionTime: row.completionTime,
|
||||
displayTime: row.displayTime,
|
||||
displayTimeZone: row.displayTimeZone,
|
||||
durationSeconds: row.durationSeconds,
|
||||
status: row.status,
|
||||
reason: row.reason,
|
||||
commit: row.commit,
|
||||
branch: row.branch,
|
||||
deliveryClass: row.deliveryClass,
|
||||
deliveryAuthorityEligible: row.deliveryAuthorityEligible === true,
|
||||
deliveryOwner: row.deliveryOwner,
|
||||
parentRelation: row.parentRelation,
|
||||
classification: row.classification,
|
||||
executionOwner: row.executionOwner,
|
||||
envReuse: row.envReuse,
|
||||
sourceObservation: row.sourceObservation,
|
||||
traceId: row.traceId,
|
||||
firstBreak: row.firstBreak,
|
||||
error: row.error,
|
||||
artifact: detailRequested ? {
|
||||
imageStatus: artifact.imageStatus,
|
||||
envReuse: artifact.envReuse,
|
||||
digest: artifact.digest,
|
||||
digests: artifact.digests,
|
||||
gitopsCommit: artifact.gitopsCommit,
|
||||
sourceCommit: artifact.sourceCommit,
|
||||
action: artifact.action,
|
||||
reason: artifact.reason,
|
||||
catalog: {
|
||||
present: catalog.present === true,
|
||||
status: catalog.status,
|
||||
sourceCommit: catalog.sourceCommit,
|
||||
registryVerified: catalog.registryVerified === true,
|
||||
publishedCount: catalog.publishedCount,
|
||||
reusedCount: catalog.reusedCount,
|
||||
requiredServiceCount: catalog.requiredServiceCount,
|
||||
digestCount: catalog.digestCount,
|
||||
source: catalog.source,
|
||||
...(detailRequested ? {
|
||||
repo: row.repo,
|
||||
pipeline: row.pipeline,
|
||||
startTime: row.startTime,
|
||||
completionTime: row.completionTime,
|
||||
branch: row.branch,
|
||||
deliveryAuthorityEligible: row.deliveryAuthorityEligible === true,
|
||||
parentRelation: row.parentRelation,
|
||||
classification: row.classification,
|
||||
sourceObservation: row.sourceObservation,
|
||||
artifact: {
|
||||
imageStatus: artifact.imageStatus,
|
||||
envReuse: artifact.envReuse,
|
||||
digest: artifact.digest,
|
||||
digests: artifact.digests,
|
||||
gitopsCommit: artifact.gitopsCommit,
|
||||
sourceCommit: artifact.sourceCommit,
|
||||
action: artifact.action,
|
||||
reason: artifact.reason,
|
||||
catalog: {
|
||||
present: catalog.present === true,
|
||||
status: catalog.status,
|
||||
sourceCommit: catalog.sourceCommit,
|
||||
registryVerified: catalog.registryVerified === true,
|
||||
publishedCount: catalog.publishedCount,
|
||||
reusedCount: catalog.reusedCount,
|
||||
requiredServiceCount: catalog.requiredServiceCount,
|
||||
digestCount: catalog.digestCount,
|
||||
source: catalog.source,
|
||||
valuesPrinted: false,
|
||||
},
|
||||
valuesPrinted: false,
|
||||
},
|
||||
valuesPrinted: false,
|
||||
} : undefined,
|
||||
collector: detailRequested ? {
|
||||
mode: collector.mode,
|
||||
matchingTaskCount: collector.matchingTaskCount,
|
||||
contractTaskCount: collector.contractTaskCount,
|
||||
terminalRecordCount: collector.terminalRecordCount,
|
||||
logErrorCount: collector.logErrorCount,
|
||||
logErrors: collector.logErrors,
|
||||
valuesPrinted: false,
|
||||
} : undefined,
|
||||
taskRuns: {
|
||||
count: taskRuns.count,
|
||||
longest: taskRuns.longest,
|
||||
failed: taskRuns.failed,
|
||||
details: includeTaskDetails ? taskRuns.details : undefined,
|
||||
logsCommand: taskRuns.logsCommand,
|
||||
},
|
||||
collector: {
|
||||
mode: collector.mode,
|
||||
matchingTaskCount: collector.matchingTaskCount,
|
||||
contractTaskCount: collector.contractTaskCount,
|
||||
terminalRecordCount: collector.terminalRecordCount,
|
||||
logErrorCount: collector.logErrorCount,
|
||||
logErrors: collector.logErrors,
|
||||
valuesPrinted: false,
|
||||
},
|
||||
taskRuns: {
|
||||
count: taskRuns.count,
|
||||
longest: taskRuns.longest,
|
||||
failed: taskRuns.failed,
|
||||
details: includeTaskDetails ? taskRuns.details : undefined,
|
||||
logsCommand: taskRuns.logsCommand,
|
||||
},
|
||||
} : {}),
|
||||
};
|
||||
}),
|
||||
historyErrors: result.historyErrors,
|
||||
|
||||
Reference in New Issue
Block a user