fix(cicd): preserve refresh evidence in live status
This commit is contained in:
@@ -23,14 +23,14 @@ export function followerEvidenceSummary(input: {
|
||||
observedSha: string | null;
|
||||
livePayload: Record<string, unknown> | null;
|
||||
storedCommand: Record<string, unknown> | null;
|
||||
fallbackStoredCommand?: Record<string, unknown> | null;
|
||||
}): Record<string, unknown> | null {
|
||||
const livePayload = input.livePayload;
|
||||
const storedPayload = asOptionalRecord(input.storedCommand?.payload);
|
||||
const payload = livePayload ?? storedPayload;
|
||||
if (payload === null) return null;
|
||||
const tekton = asOptionalRecord(payload.tekton);
|
||||
const pipeline = asOptionalRecord(payload.pipeline);
|
||||
const refresh = asOptionalRecord(payload.refreshEvidence);
|
||||
const fallbackStoredPayload = asOptionalRecord(input.fallbackStoredCommand?.payload);
|
||||
const tekton = firstRecord(asOptionalRecord(livePayload?.tekton), asOptionalRecord(storedPayload?.tekton), asOptionalRecord(fallbackStoredPayload?.tekton));
|
||||
const pipeline = firstRecord(asOptionalRecord(livePayload?.pipeline), asOptionalRecord(storedPayload?.pipeline), asOptionalRecord(fallbackStoredPayload?.pipeline));
|
||||
const refresh = firstRecord(asOptionalRecord(storedPayload?.refreshEvidence), asOptionalRecord(fallbackStoredPayload?.refreshEvidence), asOptionalRecord(livePayload?.refreshEvidence));
|
||||
if (tekton === null && pipeline === null && refresh === null) return null;
|
||||
const pipelineRefName = stringOrNull(tekton?.pipelineRefName);
|
||||
const pipelineName = stringOrNull(asOptionalRecord(pipeline?.metadata)?.name);
|
||||
@@ -39,6 +39,7 @@ export function followerEvidenceSummary(input: {
|
||||
return {
|
||||
pipelineRunRefName: pipelineRefName,
|
||||
pipeline,
|
||||
refreshBoundedReason: refresh === null ? "missing-from-live-and-stored-evidence" : null,
|
||||
refresh: refresh === null
|
||||
? null
|
||||
: {
|
||||
@@ -50,6 +51,13 @@ export function followerEvidenceSummary(input: {
|
||||
};
|
||||
}
|
||||
|
||||
function firstRecord(...values: Array<Record<string, unknown> | null>): Record<string, unknown> | null {
|
||||
for (const value of values) {
|
||||
if (value !== null) return value;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function asOptionalRecord(value: unknown): Record<string, unknown> | null {
|
||||
return typeof value === "object" && value !== null && !Array.isArray(value) ? value as Record<string, unknown> : null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user