fix(ci): finalize testbox sessions after setup failures

Ensure Testbox wrapper workflows finalize backend sessions even when setup fails, align the check timeout fallback with the documented 120-minute default, and guard the workflow invariants.
This commit is contained in:
Vincent Koc
2026-06-23 11:26:30 +08:00
committed by GitHub
parent f2b8668a54
commit f80d9b6eae
4 changed files with 22 additions and 9 deletions
@@ -261,6 +261,6 @@ jobs:
- name: Run Testbox
uses: useblacksmith/run-testbox@3f60ff9ceb2c10c3feefa87dc0c6490cffae059d
if: success()
if: always()
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
+1 -1
View File
@@ -179,6 +179,6 @@ jobs:
- name: Run Testbox
uses: useblacksmith/run-testbox@5ca05834db1d3813554d1dd109e5f2087a8d7cbc
if: success()
if: always()
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
+2 -2
View File
@@ -33,7 +33,7 @@ jobs:
contents: read
name: "check"
runs-on: blacksmith-32vcpu-ubuntu-2404
timeout-minutes: ${{ fromJSON(inputs.timeout_minutes || '30') }}
timeout-minutes: ${{ fromJSON(inputs.timeout_minutes || '120') }}
steps:
- name: Begin Testbox
uses: useblacksmith/begin-testbox@233448af4bfdc6fca509a7f0974411ac6d8a8043
@@ -168,6 +168,6 @@ jobs:
- name: Run Testbox
uses: useblacksmith/run-testbox@3f60ff9ceb2c10c3feefa87dc0c6490cffae059d
if: success()
if: always()
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
@@ -1254,17 +1254,30 @@ describe("package artifact reuse", () => {
).toHaveLength(2);
});
it("fails Testbox changed-check delegation when the remote command fails", () => {
it("finalizes Testbox delegation even when setup or the remote command fails", () => {
const workflow = readFileSync(CI_CHECK_TESTBOX_WORKFLOW, "utf8");
const runTestboxStep = workflowJob(CI_CHECK_TESTBOX_WORKFLOW, "check").steps?.find(
(step) => step.name === "Run Testbox",
const checkTestboxJob = workflowJob(CI_CHECK_TESTBOX_WORKFLOW, "check");
const runTestboxStep = workflowStep(checkTestboxJob, "Run Testbox");
const runArmTestboxStep = workflowStep(
workflowJob(CI_CHECK_ARM_TESTBOX_WORKFLOW, "check-arm"),
"Run Testbox",
);
const runBuildArtifactsTestboxStep = workflowStep(
workflowJob(CI_BUILD_ARTIFACTS_TESTBOX_WORKFLOW, "build-artifacts"),
"Run Testbox",
);
expect(workflow).toContain('PNPM_CONFIG_STORE_DIR: "/tmp/openclaw-pnpm-store"');
expect(workflow).not.toContain("PNPM_CONFIG_MODULES_DIR");
expect(workflow).not.toContain("PNPM_CONFIG_VIRTUAL_STORE_DIR");
expect(runTestboxStep?.uses).toContain("useblacksmith/run-testbox@");
expect(runTestboxStep?.["continue-on-error"]).toBeUndefined();
expect(checkTestboxJob["timeout-minutes"]).toBe(
"${{ fromJSON(inputs.timeout_minutes || '120') }}",
);
expect(runTestboxStep.uses).toContain("useblacksmith/run-testbox@");
expect(runTestboxStep.if).toBe("always()");
expect(runArmTestboxStep.if).toBe("always()");
expect(runBuildArtifactsTestboxStep.if).toBe("always()");
expect(runTestboxStep["continue-on-error"]).toBeUndefined();
});
it("allows the Telegram lane to run from reusable package acceptance artifacts", () => {