diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 4e5f5a70e1b..68ae1ac101f 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -220,6 +220,15 @@ jobs: # self-hosted runners from pressure-flake unhandled errors. RUNNER_ENVIRONMENT: '${{ runner.environment }}' run: |- + export TMPDIR="${RUNNER_TEMP:-${TMPDIR:-/tmp}}" + if [ "${RUNNER_OS:-}" = "Linux" ]; then + QWEN_CI_TMPDIR="$(mktemp -d /var/tmp/qwen-ci-XXXXXX 2>/dev/null || true)" + if [ -n "$QWEN_CI_TMPDIR" ]; then + TMPDIR="$QWEN_CI_TMPDIR" + export TMPDIR + trap 'rm -rf "$TMPDIR" 2>/dev/null || true' EXIT + fi + fi # The docker leg runs vitest directly instead of through # test:integration:sandbox:docker: that script would rebuild the image # the step above just built. diff --git a/scripts/tests/e2e-workflow.test.js b/scripts/tests/e2e-workflow.test.js index 60ea5614b54..c8838dc4325 100644 --- a/scripts/tests/e2e-workflow.test.js +++ b/scripts/tests/e2e-workflow.test.js @@ -86,4 +86,12 @@ describe('e2e workflow', () => { expect(retryStep.env.VERBOSE).toBe('true'); }); }); + + it('routes Linux E2E scratch files away from /tmp', () => { + const runStep = yml.jobs['e2e-test-linux'].steps.find( + (step) => step.name === 'Run E2E tests', + ); + expect(runStep.run).toContain('mktemp -d /var/tmp/qwen-ci-XXXXXX'); + expect(runStep.run).toContain('trap \'rm -rf "$TMPDIR"'); + }); });