fix(ci): retry interrupted Windows dashboard release checks (#119095)

This commit is contained in:
Dallin Romney
2026-08-05 04:36:05 +08:00
committed by GitHub
parent f3dbf15ad3
commit 532580fa2b
2 changed files with 49 additions and 13 deletions
@@ -974,19 +974,39 @@ jobs:
if [[ -n "${OPENCLAW_DISCORD_SMOKE_BOT_TOKEN}" ]] && [[ -n "${OPENCLAW_DISCORD_SMOKE_GUILD_ID}" ]] && [[ -n "${OPENCLAW_DISCORD_SMOKE_CHANNEL_ID}" ]]; then
DISCORD_ARGS+=(--run-discord-roundtrip true)
fi
bash workflow/scripts/github/run-openclaw-cross-os-release-checks.sh \
--candidate-tgz "${CANDIDATE_TGZ}" \
--candidate-version "${CANDIDATE_VERSION}" \
--source-sha "${SOURCE_SHA}" \
--baseline-spec "${BASELINE_SPEC}" \
--previous-version "${PREVIOUS_VERSION}" \
--baseline-tgz "${BASELINE_TGZ}" \
--provider "${PROVIDER}" \
--mode "${MODE}" \
--suite "${SUITE}" \
--ref "${REF}" \
"${DISCORD_ARGS[@]}" \
--output-dir "${OUTPUT_DIR}"
run_cross_os_release_checks() {
bash workflow/scripts/github/run-openclaw-cross-os-release-checks.sh \
--candidate-tgz "${CANDIDATE_TGZ}" \
--candidate-version "${CANDIDATE_VERSION}" \
--source-sha "${SOURCE_SHA}" \
--baseline-spec "${BASELINE_SPEC}" \
--previous-version "${PREVIOUS_VERSION}" \
--baseline-tgz "${BASELINE_TGZ}" \
--provider "${PROVIDER}" \
--mode "${MODE}" \
--suite "${SUITE}" \
--ref "${REF}" \
"${DISCORD_ARGS[@]}" \
--output-dir "${OUTPUT_DIR}"
}
if run_cross_os_release_checks; then
exit 0
else
status=$?
fi
dashboard_log="${OUTPUT_DIR}/logs/${MODE}-dashboard.log"
if [[ "${OPENCLAW_RELEASE_CHECK_OS}" != "windows" ||
"$status" -ne 127 ||
! -f "${dashboard_log}" ||
-f "${OUTPUT_DIR}/summary.json" ]] ||
! grep -q 'attempt=.*url=http://127.0.0.1:' "${dashboard_log}"; then
exit "$status"
fi
echo "::warning::retrying Windows release checks after the outer process exited 127 after the dashboard probe and before summary generation"
run_cross_os_release_checks
- name: Summarize release checks
if: always()
@@ -62,6 +62,22 @@ describe("cross-OS release checks workflow", () => {
expect(workflow).not.toContain("TSX_VERSION");
});
it("retries only an interrupted Windows dashboard probe", () => {
const workflow = readWorkflow(WORKFLOW_PATH);
const consumer = job(workflow, "cross_os_release_checks");
const run = step(consumer, "Run cross-OS release checks").run;
expect(run).toContain("run_cross_os_release_checks() {");
expect(run).toContain("if run_cross_os_release_checks; then");
expect(run).toContain('"${OPENCLAW_RELEASE_CHECK_OS}" != "windows"');
expect(run).toContain('"$status" -ne 127');
expect(run).toContain('dashboard_log="${OUTPUT_DIR}/logs/${MODE}-dashboard.log"');
expect(run).toContain('-f "${OUTPUT_DIR}/summary.json"');
expect(run).toContain("attempt=.*url=http://127.0.0.1:");
expect(run).toContain("retrying Windows release checks after the outer process exited 127");
expect(run).toContain("run_cross_os_release_checks\n");
});
it("bounds npm baseline packing during prepare", () => {
const workflow = readWorkflow(WORKFLOW_PATH);
const baselineMetadata = step(job(workflow, "prepare"), "Capture baseline metadata");