fix: parse full sentinel dashboard probe output

This commit is contained in:
Codex
2026-06-28 09:14:22 +00:00
parent a0c200acfb
commit 0eb700f07e
2 changed files with 8 additions and 5 deletions
@@ -2094,6 +2094,7 @@ function probeSentinelDashboardBrowser(state: SentinelCicdState, options: Extrac
commandTimeoutMs: options.commandTimeoutSeconds * 1000, commandTimeoutMs: options.commandTimeoutSeconds * 1000,
inactivityTimeoutMs: 30000, inactivityTimeoutMs: 30000,
runIdPrefix: `web-probe-sentinel-dashboard-${state.spec.nodeId.toLowerCase()}-${state.spec.lane}-${state.sentinelId}`, runIdPrefix: `web-probe-sentinel-dashboard-${state.spec.nodeId.toLowerCase()}-${state.spec.lane}-${state.sentinelId}`,
stdoutTailBytes: 32768,
}, script); }, script);
const result = job.result; const result = job.result;
const transport = record(job.transport); const transport = record(job.transport);
+7 -5
View File
@@ -12,6 +12,7 @@ export interface WebProbeRemoteArtifactJobOptions {
pollIntervalMs?: number; pollIntervalMs?: number;
keepRemote?: boolean; keepRemote?: boolean;
runIdPrefix?: string; runIdPrefix?: string;
stdoutTailBytes?: number;
} }
interface RemoteWebProbeArtifactManifest { interface RemoteWebProbeArtifactManifest {
@@ -44,11 +45,12 @@ export function runWebProbeRemoteArtifactJob(options: WebProbeRemoteArtifactJobO
const localDir = resolve(options.localDir); const localDir = resolve(options.localDir);
const commandTimeoutMs = Math.max(1_000, options.commandTimeoutMs); const commandTimeoutMs = Math.max(1_000, options.commandTimeoutMs);
const pollIntervalMs = Math.max(250, options.pollIntervalMs ?? 2_000); const pollIntervalMs = Math.max(250, options.pollIntervalMs ?? 2_000);
const stdoutTailBytes = Math.max(4_000, Math.min(256_000, Math.floor(options.stdoutTailBytes ?? 4_000)));
const inactivityTimeoutMs = options.inactivityTimeoutMs; const inactivityTimeoutMs = options.inactivityTimeoutMs;
const keepRemote = options.keepRemote === true; const keepRemote = options.keepRemote === true;
const submitCommand = [transPath(), options.route, "sh"]; const submitCommand = [transPath(), options.route, "sh"];
const submit = runCommand(submitCommand, repoRoot, { const submit = runCommand(submitCommand, repoRoot, {
input: remoteArtifactSubmitScript(remoteDir, runId, userScript), input: remoteArtifactSubmitScript(remoteDir, runId, userScript, stdoutTailBytes),
timeoutMs: Math.min(60_000, commandTimeoutMs), timeoutMs: Math.min(60_000, commandTimeoutMs),
}); });
const submitRecovery = submit.exitCode !== 0 && isRecoverableSubmitTimeout(submit) const submitRecovery = submit.exitCode !== 0 && isRecoverableSubmitTimeout(submit)
@@ -248,7 +250,7 @@ function cleanupRemoteDir(route: string, remoteDir: string, keepRemote: boolean)
}; };
} }
function remoteArtifactSubmitScript(remoteDir: string, runId: string, userScript: string): string { function remoteArtifactSubmitScript(remoteDir: string, runId: string, userScript: string, stdoutTailBytes: number): string {
return [ return [
"set -eu", "set -eu",
`remote_dir=${shellQuote(remoteDir)}`, `remote_dir=${shellQuote(remoteDir)}`,
@@ -264,7 +266,7 @@ function remoteArtifactSubmitScript(remoteDir: string, runId: string, userScript
"fi", "fi",
writeBase64FileShell("$user_script", userScript, "UNIDESK_WEB_PROBE_ARTIFACT_USER_B64"), writeBase64FileShell("$user_script", userScript, "UNIDESK_WEB_PROBE_ARTIFACT_USER_B64"),
"chmod 700 \"$user_script\"", "chmod 700 \"$user_script\"",
writeBase64FileShell("$runner_script", remoteArtifactRunnerScript(remoteDir, runId), "UNIDESK_WEB_PROBE_ARTIFACT_RUNNER_B64"), writeBase64FileShell("$runner_script", remoteArtifactRunnerScript(remoteDir, runId, stdoutTailBytes), "UNIDESK_WEB_PROBE_ARTIFACT_RUNNER_B64"),
"chmod 700 \"$runner_script\"", "chmod 700 \"$runner_script\"",
'nohup sh "$runner_script" "$user_script" >"$submit_stdout" 2>"$submit_stderr" < /dev/null &', 'nohup sh "$runner_script" "$user_script" >"$submit_stdout" 2>"$submit_stderr" < /dev/null &',
'pid=$!', 'pid=$!',
@@ -297,7 +299,7 @@ function remoteArtifactStatusScript(remoteDir: string): string {
].join("\n"); ].join("\n");
} }
function remoteArtifactRunnerScript(remoteDir: string, runId: string): string { function remoteArtifactRunnerScript(remoteDir: string, runId: string, stdoutTailBytes: number): string {
return [ return [
"set -eu", "set -eu",
`remote_dir=${shellQuote(remoteDir)}`, `remote_dir=${shellQuote(remoteDir)}`,
@@ -328,7 +330,7 @@ function remoteArtifactRunnerScript(remoteDir: string, runId: string): string {
" ;;", " ;;",
" esac", " esac",
"done", "done",
"b64_tail() { if [ -f \"$1\" ]; then tail -c 4000 \"$1\" | base64 | tr -d '\\n'; fi; }", `b64_tail() { if [ -f "$1" ]; then tail -c ${stdoutTailBytes} "$1" | base64 | tr -d '\\n'; fi; }`,
"{", "{",
`printf '%s\\n' ${shellQuote(manifestBegin)}`, `printf '%s\\n' ${shellQuote(manifestBegin)}`,
"printf 'run_id\\t%s\\n' \"$run_id\"", "printf 'run_id\\t%s\\n' \"$run_id\"",