Skip to content

submit all helix items in single job - #84873

Merged
dibarbet merged 3 commits into
dotnet:mainfrom
dibarbet:dibarbet-combine-helix-submissions
Aug 18, 2026
Merged

submit all helix items in single job#84873
dibarbet merged 3 commits into
dotnet:mainfrom
dibarbet:dibarbet-combine-helix-submissions

Conversation

@dibarbet

@dibarbet dibarbet commented Aug 12, 2026

Copy link
Copy Markdown
Member

Now that the helix test jobs only submit to helix and do not wait for completion, we can instead run a single job (per build kind) that submits all the test configurations to helix. This reduces the number of AzDo machines we have to acquire.

However - it does mean that the stage / phase names change which breaks test history lookup (would conflate tests with the same name that run in multiple test configurations). To fix that we derive a stable name for the test configuration based on the RunTests parameters that we use when submitting the run to helix. Then we can query AzDo for tests matching that run name when looking for test history to scope them to only tests for that test configuration.

image
Microsoft Reviewers: Open in CodeFlow

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 2 pipeline(s).
There may be pipelines that require an authorized user to comment /azp run to run.

@dibarbet
dibarbet force-pushed the dibarbet-combine-helix-submissions branch from 1ec4e20 to 63476c0 Compare August 13, 2026 01:13
@dibarbet
dibarbet marked this pull request as ready for review August 13, 2026 17:14
Copilot AI lite review requested due to automatic review settings August 13, 2026 17:14
@dibarbet
dibarbet requested a review from a team as a code owner August 13, 2026 17:14
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 2 pipeline(s).
There may be pipelines that require an authorized user to comment /azp run to run.

@dibarbet dibarbet changed the title submit all helix jobs at once submit all helix items in single job Aug 13, 2026
}
}

private static string GetTestRunName(Options options)

@dibarbet dibarbet Aug 13, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

instead of getting the test configuration name based on the job name that queued it (since we no longer have a job for each test configuration), we derive a stable job name based on the input parameters.

this becomes the test run name in AzDo (with the queue appended):

Image

@jaredpar

Copy link
Copy Markdown
Member
image

At a glance that looks like the right amount of tests

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR consolidates Windows Helix test submissions so a single job (per build kind) submits multiple Helix configurations sequentially, reducing Azure DevOps agent usage. To preserve accurate historical scheduling data despite changed job/stage names, it derives a stable test run name from RunTests submission parameters and updates the AzDO history lookup to query by that run name.

Changes:

  • Update RunTests test history lookup to identify the relevant AzDO test run by a stable Helix test run name (instead of phase/stage name).
  • Derive and flow a stable TestRunNamePrefix into Helix submissions so historical test duration data can be scoped to a specific configuration.
  • Refactor the Windows test stage to submit multiple Helix runs from a single job, preserving per-submission logs/payloads.
Show a summary per file
File Description
src/Tools/RunTests/TestHistoryManager.cs Switch history lookup from phase-based filtering to stable test-run-name-based filtering.
src/Tools/RunTests/Options.cs Remove PhaseName option wiring now that history lookup no longer depends on AzDO phase name.
src/Tools/RunTests/HelixTestRunner.cs Generate stable test run name and use it as the Helix TestRunNamePrefix; keep known env-var tokens consistent.
src/Tools/RunTests/AzdoClient.cs Rename/run lookup API to fetch a test run by exact name (case-insensitive).
eng/pipelines/test-windows-job.yml Submit multiple Helix configurations in one job; preserve logs/payloads between sequential submissions.
azure-pipelines.yml Replace multiple Windows Helix test jobs with a single job that iterates through testRuns.

Review details

  • Files reviewed: 6/6 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment on lines +84 to +85
Get-ChildItem -Path $logDirectory -Filter 'workitem_*' -Directory |
Move-Item -Destination $submissionLogDirectory -Force
@dibarbet
dibarbet merged commit fa5b115 into dotnet:main Aug 18, 2026
25 checks passed
@dibarbet
dibarbet deleted the dibarbet-combine-helix-submissions branch August 18, 2026 18:05
@jjonescz jjonescz added this to the 18.11 milestone Aug 25, 2026
JoeRobich added a commit that referenced this pull request Sep 4, 2026
## Summary
- backport the Roslyn `RunTests` changes needed for the standalone Helix
Job Monitor
- consolidate Windows Helix submissions and add monitor jobs for
Windows, Linux, and macOS
- pin the monitor tool to the Arcade `release/10.0` build used by #85150

This PR is stacked on #85150 so the diff contains only the test runner
and CI infrastructure changes. After #85150 merges, this PR can be
retargeted to `release/dev18.0`.

Backports the relevant behavior from #84810, #84872, #84873, and #85070.
###### Microsoft Reviewers: [Open in
CodeFlow](https://microsoft.github.io/open-pr/?codeflow=https://github.com/dotnet/roslyn/pull/85153)

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4f9174b1-67dc-4def-b0c1-3b8e1746e681
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants