Collapse standalone Libraries Test Run jobs into build legs (Helix submission in-job) - #131948
akoeplinger with Copilot wants to merge 3 commits into
Conversation
|
Azure Pipelines: 16 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
Co-authored-by: akoeplinger <1376924+akoeplinger@users.noreply.github.com>
Co-authored-by: akoeplinger <1376924+akoeplinger@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
Suppressed comments (6)
eng/pipelines/coreclr/templates/superpmi-collect-pipeline.yml:64
- SuperPMI collection submissions need a non-empty
SuperPmiCollectionType. Thishelix.ymlinvocation doesn’t set it, so the default empty value will flow into the Helix post-commands and result filenames (double-dot artifacts), which can break collection processing.
testRunNamePrefixSuffix: coreclr_Checked
useHelixMonitor: ${{ variables.enableHelixJobMonitor }}
extraHelixArguments: /p:Configuration=Release /p:RuntimeConfiguration=Checked
SuperPmiCollect: true
SuperPmiCollectionName: libraries_tests_no_tiered_compilation
eng/pipelines/coreclr/templates/superpmi-collect-pipeline.yml:118
- SuperPMI collection submissions need
SuperPmiCollectionTypeset (used for result file naming and post-commands). Leaving it empty here will generate incorrectly named outputs and can break collection processing.
testScope: innerloop
testRunNamePrefixSuffix: coreclr_Checked
useHelixMonitor: ${{ variables.enableHelixJobMonitor }}
extraHelixArguments: /p:Configuration=Release /p:RuntimeConfiguration=Checked
SuperPmiCollect: true
eng/pipelines/coreclr/templates/superpmi-collect-pipeline.yml:128
- SuperPMI collection submissions need
SuperPmiCollectionTypeset. With the currenthelix.ymlcall it stays empty, which changes the expected.mch/.lognames and can break collection processing.
creator: dotnet-bot
testScope: innerloop
testRunNamePrefixSuffix: coreclr_Checked
useHelixMonitor: ${{ variables.enableHelixJobMonitor }}
extraHelixArguments: /p:Configuration=Release /p:RuntimeConfiguration=Checked
eng/pipelines/coreclr/templates/superpmi-collect-pipeline.yml:186
- SuperPMI collection submissions need
SuperPmiCollectionTypeset. Leaving it empty here will produce incorrectly named.mch/.logoutputs (double-dot artifacts) and can break collection processing.
parameters:
creator: dotnet-bot
testScope: innerloop
testRunNamePrefixSuffix: coreclr_Checked
useHelixMonitor: ${{ variables.enableHelixJobMonitor }}
eng/pipelines/coreclr/templates/superpmi-collect-pipeline.yml:196
- SuperPMI collection submissions need
SuperPmiCollectionTypeset. If it remains empty here, the SuperPMI post-commands and downloaded result filenames won’t match expectations, which can break collection processing.
- template: /eng/pipelines/libraries/helix.yml
parameters:
creator: dotnet-bot
testScope: innerloop
testRunNamePrefixSuffix: coreclr_Checked
eng/pipelines/coreclr/templates/superpmi-collect-pipeline.yml:78
- This platform-matrix leg now embeds the Helix SuperPMI collection submission into the build job, but the job still uses
timeoutInMinutes: 120later in this block. Previously the equivalent libraries SuperPMI test-run leg used a 300 minute timeout (notably for osx-arm64); collapsing the test leg into the build job without increasing the timeout risks the job timing out before Helix completes.
parameters:
jobTemplate: /eng/pipelines/common/global-build-job.yml
helixQueueGroup: superpmi
helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
buildConfig: checked
| testRunNamePrefixSuffix: coreclr_Checked | ||
| useHelixMonitor: ${{ variables.enableHelixJobMonitor }} | ||
| SuperPmiCollect: true | ||
| SuperPmiCollectionName: libraries_tests | ||
| scenarios: | ||
| - normal |
|
@copilot address the CI failures and the code review comment |
| testRunNamePrefixSuffix: coreclr_Checked | ||
| useHelixMonitor: ${{ variables.enableHelixJobMonitor }} | ||
| extraHelixArguments: /p:Configuration=Release /p:RuntimeConfiguration=Checked | ||
| SuperPmiCollect: true | ||
| SuperPmiCollectionName: libraries_tests | ||
| scenarios: | ||
| - normal | ||
| - template: /eng/pipelines/libraries/helix.yml | ||
| parameters: | ||
| creator: dotnet-bot | ||
| testScope: innerloop | ||
| testRunNamePrefixSuffix: coreclr_Checked | ||
| useHelixMonitor: ${{ variables.enableHelixJobMonitor }} | ||
| extraHelixArguments: /p:Configuration=Release /p:RuntimeConfiguration=Checked | ||
| SuperPmiCollect: true | ||
| SuperPmiCollectionName: libraries_tests_no_tiered_compilation | ||
| scenarios: | ||
| - no_tiered_compilation |
| testRunNamePrefixSuffix: coreclr_Checked | ||
| useHelixMonitor: ${{ variables.enableHelixJobMonitor }} | ||
| extraHelixArguments: /p:Configuration=Release /p:RuntimeConfiguration=Checked | ||
| SuperPmiCollect: true |
|
Can we move the host/installer build+test steps into the main build job as well? If we do that, we should also rename the jobs as "AllSubsets" is not an interesting moniker once all jobs are "all subsets" |
|
Tagging subscribers to this area: @dotnet/area-infrastructure-libraries |
main PR N/A
Description
This refactor removes standalone libraries test-run jobs and submits the same Helix work directly from the build jobs that already produce the corresponding test assets. The goal is to keep test coverage unchanged while reducing pipeline job split overhead now that Helix Job Monitor is enabled.
Runtime pipeline (
eng/pipelines/runtime.yml)jobTemplate: /eng/pipelines/libraries/run-test-job.ymlusages.postBuildStepsHelix submission (/eng/pipelines/libraries/helix.yml) to the matching libraries/coreclr build legs.librariesqueue group where previously used) and trigger conditions per leg./p:Configuration=Release /p:RuntimeConfiguration=Checkedon the checked-runtime release-libraries leg.SuperPMI pipeline (
eng/pipelines/coreclr/templates/superpmi-collect-pipeline.yml)normal,no_tiered_compilation).superpmiqueue group and checked-runtime intent via:/p:Configuration=Release /p:RuntimeConfiguration=Checked.Template cleanup
eng/pipelines/libraries/run-test-job.yml.Coverage parity (before → after)
runtime.ymllibraries test-run legsrun-test-jobmatrix entriesglobal-build-joblegssuperpmi-collect-pipeline.ymllibraries scenariosnormal,no_tiered_compilation) across 7 platformsCustomer Impact
Keeps the same runtime/libraries test surface while reducing pipeline fragmentation and simplifying failure triage for affected legs.
Regression
No known product regression; this is CI orchestration refactoring with explicit preservation of prior test-leg coverage and runtime/config targeting.
Testing
Pipeline-template/YAML refactor only; no product code path changes.
Risk
Low to moderate. Main risk is CI leg wiring (condition/queue/config mismatch). This change keeps prior leg mapping and explicitly pins runtime/config where the old split-job flow implied it.
Package authoring no longer needed in .NET 9
IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.