fix: expose tekton taskrun failures

This commit is contained in:
Codex
2026-07-03 19:22:58 +00:00
parent 419f4502ee
commit 63987a8328
4 changed files with 68 additions and 0 deletions
+33
View File
@@ -291,6 +291,7 @@ function compactStatusGates(payload: Record<string, unknown> | null): Record<str
if (payload === null) return null;
const gitMirror = asOptionalRecord(payload.gitMirror);
const tekton = asOptionalRecord(payload.tekton);
const taskRuns = asOptionalRecord(payload.taskRuns);
const argo = asOptionalRecord(payload.argo);
const runtime = asOptionalRecord(payload.runtime);
return {
@@ -312,6 +313,14 @@ function compactStatusGates(payload: Record<string, unknown> | null): Record<str
completionTime: stringOrNull(tekton.completionTime),
durationSeconds: numberOrNull(tekton.durationSeconds),
},
taskRuns: taskRuns === null ? null : {
count: numberOrNull(taskRuns.count),
failedCount: numberOrNull(taskRuns.failedCount),
activeCount: numberOrNull(taskRuns.activeCount),
failedItems: taskRunItems(taskRuns, "failed"),
activeItems: taskRunItems(taskRuns, "active"),
slowItems: taskRunItems(taskRuns, "slow"),
},
argo: argo === null ? null : {
syncStatus: stringOrNull(argo.syncStatus),
healthStatus: stringOrNull(argo.healthStatus),
@@ -336,6 +345,30 @@ function compactStatusGates(payload: Record<string, unknown> | null): Record<str
};
}
function taskRunItems(taskRuns: Record<string, unknown>, mode: "failed" | "active" | "slow"): Record<string, unknown>[] {
const explicit = mode === "failed" ? taskRuns.failedItems : mode === "active" ? taskRuns.activeItems : taskRuns.slowItems;
const explicitItems = arrayRecords(explicit);
if (explicitItems.length > 0) return explicitItems.slice(0, 5).map(compactTaskRunItem);
const items = arrayRecords(taskRuns.items);
if (mode === "failed") return items.filter((item) => item.status === "False").slice(0, 5).map(compactTaskRunItem);
if (mode === "active") return items.filter((item) => item.status !== "True" && item.status !== "False").slice(0, 5).map(compactTaskRunItem);
return arrayRecords(asOptionalRecord(taskRuns.performance)?.slowTaskRuns).slice(0, 5).map(compactTaskRunItem);
}
function compactTaskRunItem(item: Record<string, unknown>): Record<string, unknown> {
return {
name: stringOrNull(item.name),
pipelineTask: stringOrNull(item.pipelineTask),
status: stringOrNull(item.status),
reason: stringOrNull(item.reason),
durationSeconds: numberOrNull(item.durationSeconds),
};
}
function arrayRecords(value: unknown): Record<string, unknown>[] {
return Array.isArray(value) ? value.filter((item): item is Record<string, unknown> => typeof item === "object" && item !== null && !Array.isArray(item)) : [];
}
function compactFollowerDecision(state: FollowerState): Record<string, unknown> {
return {
phase: state.phase,