ci: bound profile e2e subprocess fan-out

Set DSH_E2E_MAX_WORKERS=4 for the credentialed e2e workflow and pin that environment contract in the workflow test. Profile-launched SDK and ACP scenarios each boot a complete subprocess tree, so the previous file-level fan-out could multiply process and provider pressure far beyond the runner's useful concurrency.

The bound changes scheduling only: every e2e file still runs, the Vitest configuration retains its explicit override knob, and local callers can choose a different positive worker count when their resources allow it.
This commit is contained in:
Tianyi Cui
2026-08-23 10:59:01 +08:00
parent fdac6cffcb
commit 2eea02dae3
2 changed files with 13 additions and 3 deletions
+4 -3
View File
@@ -60,8 +60,9 @@ jobs:
if: >-
github.event_name != 'pull_request'
|| !(github.event.pull_request.head.repo.fork || github.event.pull_request.user.login == 'dependabot[bot]')
# Bounded file parallelism (DSH_E2E_MAX_WORKERS), 120s/test, retry 2. 45m
# still bounds retry storms against a slow API while the happy path fans out.
# Profile e2e files can each own several complete dsh subprocess trees, so
# four file workers preserve process/PTY headroom. Tests retain 120s/test
# and retry 2; 45m still bounds retry storms against a slow API.
timeout-minutes: 45
steps:
- uses: actions/checkout@v6
@@ -115,6 +116,6 @@ jobs:
env:
DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY_EXTERNAL }}
DEEPSEEK_BASE_URL: https://api.deepseek.com
DSH_E2E_MAX_WORKERS: 14
DSH_E2E_MAX_WORKERS: 4
DSH_EXAMPLE_MODE: lib
run: pnpm run test:e2e
+9
View File
@@ -258,6 +258,15 @@ describe('DeepSeek e2e workflow', () => {
})
expect(JSON.stringify(steps)).not.toContain('apt-get')
})
it('bounds profile subprocess fan-out to the tested e2e default', () => {
const workflow = loadWorkflow('.github/workflows/e2e.yml')
const e2e = workflowJob(workflow, 'e2e')
if (!Array.isArray(e2e.steps)) throw new TypeError('DeepSeek e2e workflow must define steps')
const step = e2e.steps.filter(isRecord).find(candidate => candidate.name === 'E2E tests (real DeepSeek API)')
expect(step).toMatchObject({ env: { DSH_E2E_MAX_WORKERS: 4 } })
})
})
describe('E2B e2e workflow', () => {