ci: switch PR workflows back to 1ES self-hosted runners with JobId#311975
Merged
ci: switch PR workflows back to 1ES self-hosted runners with JobId#311975
Conversation
Reverts the GitHub-hosted runner switch for ubuntu/windows jobs in pr*.yml and adds a unique JobId label per job, per the IcM mitigation. The JobId ensures 1ES pool runs are scoped to a specific GitHub Actions run+attempt, which prevents the cancellation issues that occurred with bare pool labels. Pool labels: - 1es-vscode-oss-ubuntu-22.04-x64 - 1es-vscode-oss-windows-2022-x64 macOS jobs (pr-darwin-test.yml, pr-node-modules macOS) remain on GitHub-hosted runners as no 1ES macOS pool exists. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates the repo’s GitHub Actions workflows to move Ubuntu/Windows PR jobs back onto 1ES self-hosted runner pools and adds a per-run/per-attempt JobId runner label intended to prevent intermittent 1ES cancellations.
Changes:
- Switch PR jobs from GitHub-hosted runners to
self-hosted1ES pools for Ubuntu 22.04 and Windows 2022. - Add a
JobId=<job>-${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }}label to affected jobs. - Revert the Linux PR test workflow runner selection from
ubuntu-24.04to the Ubuntu 22.04 1ES pool.
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/pr.yml | Moves selected PR jobs to 1ES self-hosted pools and adds JobId labels. |
| .github/workflows/pr-linux-cli-test.yml | Updates reusable Linux CLI test workflow to use 1ES pool + JobId. |
| .github/workflows/pr-linux-test.yml | Updates reusable Linux test workflow to 1ES pool + JobId (and reverts from 24.04 to 22.04 pool). |
| .github/workflows/pr-win32-test.yml | Updates reusable Windows test workflow to 1ES pool + JobId. |
| .github/workflows/pr-node-modules.yml | Updates main-branch node_modules jobs (Linux/Windows/compile) to use 1ES pools + JobId. |
Copilot's findings
- Files reviewed: 5/5 changed files
- Comments generated: 3
Contributor
pr-win32-test.yml is invoked 3x from pr.yml (Electron/Browser/Remote) and without a per-invocation discriminator all 3 jobs share the same JobId within a run, defeating the 1ES per-job scoping. Add inputs.job_name to the JobId prefix so each invocation is distinct. Apply the same defense to pr-linux-cli-test.yml for safety. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
rzhao271
approved these changes
Apr 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Reverts the GitHub-hosted runner switch (#305298) for ubuntu/windows jobs in the PR workflows and adds a unique
JobIdlabel per job. Per the recent IcM, bare1ES.Pool=...labels without aJobIdlead to 1ES runners cancelling intermittently — adding a per-run+attempt JobId scopes the agent to a specific GitHub Actions run and prevents the cancellations.Format applied to every
runs-on:Pools:
1es-vscode-oss-ubuntu-22.04-x641es-vscode-oss-windows-2022-x64Session Context
Key decisions from the development session:
runs-on: [ self-hosted, 1ES.Pool=... ]form (without JobId) is exactly what caused 1ES runs to cancel intermittently, which the recent IcM identified as the root cause. We need the JobId mitigation alongside the pool revert.JobId=<name>-${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }}. The<name>portion is the job key (e.g.compile,linux-test,copilot-windows-tests) so each job in a workflow gets a distinct JobId.pr-darwin-test.ymland the macOS job inpr-node-modules.yml). No 1ES macOS pool was ever used in this repo's history.pr-linux-test.ymlreverted fromubuntu-24.04back to the 22.04 1ES pool. That file had been bumped to 24.04 in ci: bump github runner to ubuntu-24.04 to address fontconfig crash #308495 / ci: fix intermittent fontconfig SIGSEGV on Linux CI #309451 to fix a fontconfig SIGSEGV on the GitHub-hosted runner. The 1ES pool image differs, so the crash isn't expected to recur — but worth watching.1es-vscode-oss-ubuntu-22.04-x64(not1es-vscode-ubuntu-22.04-x64). The-oss-variant is what was in use before the GH-hosted switch, per git history.Files changed (11 jobs)
pr.yml—compile,copilot-check-test-cache,copilot-check-telemetry,copilot-linux-tests,copilot-windows-testspr-linux-cli-test.yml—linux-cli-testpr-linux-test.yml—linux-test(also reverts ubuntu-24.04 → 22.04)pr-win32-test.yml—windows-testpr-node-modules.yml—compile,linux,windows(existing windows 1ES line also got JobId added)