diff --git a/azure-pipelines-PR.yml b/azure-pipelines-PR.yml index 0b3a1dcd868..cda310f612a 100644 --- a/azure-pipelines-PR.yml +++ b/azure-pipelines-PR.yml @@ -269,7 +269,10 @@ stages: inputs: testResultsFormat: 'XUnit' testRunTitle: WindowsNoRealsig_testCoreclr - mergeTestResults: true + # See eng/templates/batched-test-steps.yml: merging disjoint per-assembly XUnit + # files produces tens of thousands of "No matching test case result" warnings and + # can abort the publish, dropping results. Publish each file as its own run. + mergeTestResults: false testResultsFiles: '*.xml' searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/Release' condition: succeededOrFailed() @@ -375,7 +378,10 @@ stages: inputs: testResultsFormat: 'XUnit' testRunTitle: WindowsCompressedMetadata $(_testKind) $(transparentCompiler) - mergeTestResults: true + # See eng/templates/batched-test-steps.yml: publish each assembly file as its own + # run to avoid the merge-time "No matching test case result" warning flood and the + # "TestCaseTitle must be specified" abort that silently drops results. + mergeTestResults: false testResultsFiles: '*.xml' searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_configuration)' continueOnError: true @@ -465,8 +471,14 @@ stages: - pwsh: .\eng\MockBuild.ps1 displayName: Build with OfficialBuildId - # Linux + # Linux (split into 2 batches to limit test-process memory; batch 3 is desktop-only) - job: Linux + strategy: + matrix: + Batch1: + batchNumber: 1 + Batch2: + batchNumber: 2 pool: name: $(DncEngPublicBuildPool) demands: ImageOverride -equals $(LinuxMachineQueueName) @@ -477,7 +489,7 @@ stages: steps: - checkout: self clean: true - - script: ./eng/cibuild.sh --configuration $(_BuildConfig) --testcoreclr --mt true + - script: ./eng/cibuild.sh --configuration $(_BuildConfig) --testcoreclrbatch $(batchNumber) --mt true displayName: Build / Test - script: ./eng/common/dotnet.sh fsi tests/EndToEndBuildTests/MultithreadedTasks/run.fsx -- --configuration $(_BuildConfig) --repetitions 3 displayName: Real SDK MP / MT integration @@ -485,14 +497,17 @@ stages: condition: always() inputs: targetPath: '$(Build.SourcesDirectory)/artifacts/MultithreadedTasks' - artifact: Linux SDK MT evidence + artifact: Linux Batch$(batchNumber) SDK MT evidence - task: PublishTestResults@2 displayName: Publish Test Results inputs: testResultsFormat: 'XUnit' - testRunTitle: Linux + testRunTitle: Linux Batch$(batchNumber) testResultsFiles: '*.xml' - mergeTestResults: true + # See eng/templates/batched-test-steps.yml: publish each assembly file as its own + # run to avoid the merge-time "No matching test case result" warning flood and the + # "TestCaseTitle must be specified" abort that silently drops results. + mergeTestResults: false searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)' continueOnError: true condition: succeededOrFailed() @@ -500,7 +515,7 @@ stages: displayName: Publish Test Logs inputs: PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)' - ArtifactName: 'Linux $(_BuildConfig) test logs' + ArtifactName: 'Linux $(_BuildConfig) Batch$(batchNumber) test logs' publishLocation: Container continueOnError: true condition: failed() @@ -511,7 +526,7 @@ stages: displayName: Publish NuGet cache contents inputs: PathtoPublish: '$(Build.SourcesDirectory)/artifacts/NugetPackageRootContents' - ArtifactName: 'NuGetPackageContents Linux' + ArtifactName: 'NuGetPackageContents Linux Batch$(batchNumber)' publishLocation: Container continueOnError: true condition: failed() diff --git a/eng/templates/batched-test-steps.yml b/eng/templates/batched-test-steps.yml index 712d5e3219f..4b660f5ddf3 100644 --- a/eng/templates/batched-test-steps.yml +++ b/eng/templates/batched-test-steps.yml @@ -38,7 +38,12 @@ steps: inputs: testResultsFormat: 'XUnit' testRunTitle: ${{ parameters.testRunTitlePrefix }} Batch$(batchNumber) - mergeTestResults: true + # Publish each assembly's result file as its own run. Merging disjoint per-assembly + # XUnit files into one run makes the ADO publisher emit a "No matching test case result + # found on server" warning for every test in every file after the first (tens of thousands + # of warnings per build), and can abort with "TestCaseTitle must be specified", silently + # dropping a whole assembly's results. + mergeTestResults: false testResultsFiles: '*.xml' searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/${{ parameters.configuration }}' continueOnError: true