perf: reuse selfmedia build environment

This commit is contained in:
Codex
2026-07-14 12:55:30 +02:00
parent f17c5e795d
commit 80379a2012
6 changed files with 118 additions and 7 deletions
@@ -703,6 +703,12 @@ function recursiveEnvReuse(value, state) {
if (typeof value.reusedServiceCount === 'number') state.serviceReusedCount = value.reusedServiceCount;
if (typeof value.envReuse === 'string') state.status = value.envReuse;
if (typeof value.envReuseStatus === 'string') state.status = value.envReuseStatus;
if (typeof value.envIdentity === 'string') state.identity = value.envIdentity;
if (value.stageTimings && typeof value.stageTimings === 'object' && !Array.isArray(value.stageTimings)) {
for (const [key, timing] of Object.entries(value.stageTimings)) {
if (typeof timing === 'number' && Number.isFinite(timing)) state.stageTimings[key] = timing;
}
}
if (value.envReuse && typeof value.envReuse === 'object') {
const env = value.envReuse;
if (typeof env.mode === 'string') state.status = env.mode;
@@ -742,7 +748,7 @@ function boundedFailureRecord(value) {
}
function envReuseForPipelineRun(namespace, name, taskRuns) {
const state = { status: null, buildSkippedCount: null, serviceReusedCount: null, buildCache: null, source: 'pipeline-task-logs', sourceObservation: null, artifact: null, collector: null, traceId: null, firstBreak: null, error: null };
const state = { status: null, identity: null, buildSkippedCount: null, serviceReusedCount: null, buildCache: null, stageTimings: {}, source: 'pipeline-task-logs', sourceObservation: null, artifact: null, collector: null, traceId: null, firstBreak: null, error: null };
const matching = (taskRuns.items || []).filter((item) => item.metadata?.labels?.['tekton.dev/pipelineRun'] === name);
const contractTaskRuns = matching.filter((item) => taskTerminalRecord(item) !== null);
const terminalRecords = contractTaskRuns.map(taskTerminalRecord).filter(Boolean);
@@ -889,9 +895,11 @@ function rowFor(consumer, item, taskRuns) {
classification,
envReuse: {
status: evidence.status,
identity: evidence.identity,
buildSkippedCount: evidence.buildSkippedCount,
serviceReusedCount: evidence.serviceReusedCount,
buildCache: evidence.buildCache,
stageTimings: evidence.stageTimings,
source: evidence.source,
},
sourceObservation,