mirror of
https://github.com/microsoft/vscode.git
synced 2026-10-28 13:26:52 +08:00
* ci: run Windows PR checks on vscode-large-runners-windows-8-core Every Windows 1ES job waited for a runner in about 1 of 4 PR runs (p90 7.4 min), because the 1ES pool scales out slowly at peak times. The 8-core larger runners have the same CPU and memory, start in seconds, and have a 200 runner limit, above the 131 peak that the PR checks would need. Without the JobId label of the 1ES runners, the Windows test workflow no longer needs its job_name input. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * ci: use the larger runner's Electron cache path in the cache detector The Windows cache warming job now runs on vscode-large-runners-windows-8-core, whose user profile is runneradmin, so setup-electron caches Electron under C:\Users\runneradmin\AppData\Local\electron\Cache. The cache path is part of the cache version, and the detector still used the 1ES cloudtest path: it would skip warming while only the old cache existed, and warm on every push once that expired. A new test checks the detector's Electron cache versions against the cache paths on the runners of the jobs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * ci: keep the Windows test workspace on a Dev Drive The larger runners have no temporary disk, so the workspace is on the OS disk, where extracting the node_modules cache (219k files) took 100-160s instead of the 60s on the 1ES runners' temporary disk; restoring the cache went from 1.3 to 2.2-4.8 min per job. In a benchmark on the larger runner, decompressing the archive took only 6s, and extracting it into a Dev Drive in a VHDX on the same OS disk took 43-45s. The Windows test jobs now mount a Dev Drive at the parent of the workspace before checkout. The workspace keeps its path, and falls back to the OS disk with a warning if the Dev Drive cannot be set up. The smoke test shard with the WSL suite keeps the OS disk, because WSL cannot open folders on a volume that is mounted in a folder of drive C:. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * ci: shard the Windows Agent Host E2E tests on the larger runners On one 8-core larger runner, the six Agent Host E2E suites took 26-33 min, with the workspace on the OS disk or on a Dev Drive, instead of 10-13 min on the 1ES runners; every suite slowed down by a similar factor. In two shards of three suites each, they took about 12 min per shard. The Agent Host E2E runner gets a --shard <index>/<total> option, which runs every <total>th suite and is also passed on to the Linux storage passes, and the Windows Agent Host E2E job runs in two shards. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * smoke: don't use the host's Docker daemon to clean up the WSL Dev Container The WSL Dev Container suite runs its container on the Docker daemon in WSL, whose fixture removes it, and it doesn't check for a Docker daemon on the Windows host. Its cleanup still ran `docker ps` on the host, which failed the suite when the host had no running Docker engine, as happened on the vscode-large-runners-windows-8-core runners. It now only removes the .devcontainer folder. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
40 lines
1.5 KiB
Bash
Executable File
40 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
realpath() { [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"; }
|
|
ROOT=$(dirname $(dirname $(realpath "$0")))
|
|
else
|
|
ROOT=$(dirname $(dirname $(readlink -f $0)))
|
|
fi
|
|
|
|
cd "$ROOT"
|
|
|
|
if [[ "$1" == "--help" || "$1" == "-h" ]]; then
|
|
echo "Usage: $0 [options]"
|
|
echo ""
|
|
echo "Runs the deterministic Agent Host E2E suites, one isolated test process per"
|
|
echo "entrypoint, in parallel. scripts/test-integration.sh does not run them."
|
|
echo ""
|
|
echo "Options:"
|
|
echo " --jobs <n> maximum number of suites to run in parallel"
|
|
echo " --shard <index>/<total> run only every <total>th suite, starting with suite <index>"
|
|
echo " --storage <disk|tmpfs|split> temporary storage for the suites (tmpfs and split require Linux)"
|
|
echo " --runList <file> run only the suites whose files are listed in <file>, one per line"
|
|
echo " --grep, -g, -f <pattern> filter test cases by name"
|
|
echo " --build use the out-build directory"
|
|
echo " --help, -h show this help"
|
|
echo ""
|
|
echo "All other options are forwarded to scripts/test.sh."
|
|
echo "Set VSCODE_SKIP_AGENT_HOST_E2E=1 to skip the suites, for example when no relevant files changed."
|
|
echo "See src/vs/platform/agentHost/test/node/e2e/README.md."
|
|
exit 0
|
|
fi
|
|
|
|
if [[ "$VSCODE_SKIP_AGENT_HOST_E2E" == "1" ]]; then
|
|
echo "Skipping Agent Host E2E tests because VSCODE_SKIP_AGENT_HOST_E2E is set."
|
|
exit 0
|
|
fi
|
|
|
|
exec node ./test/integration/agentHost/runner.ts "$@"
|