Skip to content

Commit 7aa39f3

Browse files
authored
Multi agent parallel testing in CI (#18523)
1 parent 087ffa2 commit 7aa39f3

File tree

4 files changed

+182
-105
lines changed

4 files changed

+182
-105
lines changed

azure-pipelines-PR.yml

Lines changed: 108 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ trigger:
1414
- docs/*
1515
- .vscode/*
1616
- .devcontainer/*
17-
- tests/scripts/
17+
- tests/scripts/*
1818
- attributions.md
1919
- CODE_OF_CONDUCT.md
2020
- DEVGUIDE.md
@@ -306,21 +306,32 @@ stages:
306306
name: $(DncEngPublicBuildPool)
307307
demands: ImageOverride -equals $(WindowsMachineQueueName)
308308
timeoutInMinutes: 120
309+
strategy:
310+
parallel: 4
309311
steps:
310312
- checkout: self
311313
clean: true
312314

313-
- script: eng\CIBuild.cmd -compressallmetadata -buildnorealsig -testDesktop -configuration Release
315+
- script: eng\CIBuild.cmd -compressallmetadata -buildnorealsig -testDesktop -configuration Release -testBatch $(System.JobPositionInPhase)
314316
env:
315317
DOTNET_DbgEnableMiniDump: 1
316318
DOTNET_DbgMiniDumpType: 3 # Triage dump, 1 for mini, 2 for Heap, 3 for triage, 4 for full. Don't use 4 unless you know what you're doing.
317319
DOTNET_DbgMiniDumpName: $(Build.SourcesDirectory)\artifacts\log\Release\$(Build.BuildId)-%e-%p-%t.dmp
318320
NativeToolsOnMachine: true
319321
displayName: Build
320322

323+
- task: PublishTestResults@2
324+
displayName: Publish Test Results
325+
inputs:
326+
testResultsFormat: 'XUnit'
327+
testRunTitle: WindowsNoRealsig_testDesktop batch $(System.JobPositionInPhase)
328+
mergeTestResults: true
329+
testResultsFiles: '*.xml'
330+
searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/Release'
331+
continueOnError: true
321332
- task: PublishBuildArtifacts@1
322333
displayName: Publish Build BinLog
323-
condition: always()
334+
condition: eq(variables['System.JobPositionInPhase'], 1)
324335
continueOnError: true
325336
inputs:
326337
PathToPublish: '$(Build.SourcesDirectory)\artifacts\log/Release\Build.VisualFSharp.sln.binlog'
@@ -333,7 +344,7 @@ stages:
333344
continueOnError: true
334345
inputs:
335346
PathToPublish: '$(Build.SourcesDirectory)\artifacts\log\Release'
336-
ArtifactName: 'Windows Release WindowsNoRealsig_testDesktop process dumps'
347+
ArtifactName: 'Windows Release WindowsNoRealsig_testDesktop process dumps $(System.JobPositionInPhase)'
337348
ArtifactType: Container
338349
parallel: true
339350

@@ -429,71 +440,50 @@ stages:
429440
demands: ImageOverride -equals $(WindowsMachineQueueName)
430441
timeoutInMinutes: 120
431442
strategy:
432-
maxParallel: 5
433443
matrix:
434-
desktop_release:
435-
_configuration: Release
436-
_testKind: testDesktop
437444
coreclr_release:
438445
_configuration: Release
439446
_testKind: testCoreclr
447+
transparentCompiler: # Empty display name part.
440448
fsharpqa_release:
441449
_configuration: Release
442450
_testKind: testFSharpQA
451+
transparentCompiler:
443452
vs_release:
444453
_configuration: Release
445454
_testKind: testVs
455+
setupVsHive: true
456+
transparentCompiler:
446457
transparent_compiler_release:
447458
_configuration: Release
448459
_testKind: testCoreclr
449-
450-
${{ if eq(variables['Build.Reason'], 'Flaky, disabled, was PullRequest') }}:
451-
inttests_release:
452-
_configuration: Release
453-
_testKind: testIntegration
460+
TEST_TRANSPARENT_COMPILER: 1 # Pipeline variable will map to env var.
461+
transparentCompiler: TransparentCompiler
462+
# inttests_release:
463+
# _configuration: Release
464+
# _testKind: testIntegration
465+
# setupVsHive: true
454466
steps:
455467
- checkout: self
456468
clean: true
457469

458470
- powershell: eng\SetupVSHive.ps1
459471
displayName: Setup VS Hive
460-
condition: or(eq(variables['_testKind'], 'testVs'), eq(variables['_testKind'], 'testIntegration'))
461-
462-
# yes, this is miserable, but - https://github.com/dotnet/arcade/issues/13239
463-
- script: eng\CIBuild.cmd -compressallmetadata -configuration $(_configuration) -$(_testKind)
464-
env:
465-
DOTNET_DbgEnableMiniDump: 1
466-
DOTNET_DbgMiniDumpType: 3 # Triage dump, 1 for mini, 2 for Heap, 3 for triage, 4 for full. Don't use 4 unless you know what you're doing.
467-
DOTNET_DbgMiniDumpName: $(Build.SourcesDirectory)\artifacts\log\$(_configuration)\$(Build.BuildId)-%e-%p-%t.dmp
468-
NativeToolsOnMachine: true
469-
displayName: Build / Test
470-
condition: and( ne(variables['_testKind'], 'testIntegration'), ne(variables['System.JobName'], 'transparent_compiler_release') )
471-
472-
- script: eng\CIBuild.cmd -compressallmetadata -configuration $(_configuration) -$(_testKind)
473-
env:
474-
DOTNET_DbgEnableMiniDump: 1
475-
DOTNET_DbgMiniDumpType: 3 # Triage dump, 1 for mini, 2 for Heap, 3 for triage, 4 for full. Don't use 4 unless you know what you're doing.
476-
DOTNET_DbgMiniDumpName: $(Build.SourcesDirectory)\artifacts\log\$(_configuration)\$(Build.BuildId)-%e-%p-%t.dmp
477-
TEST_TRANSPARENT_COMPILER: 1
478-
NativeToolsOnMachine: true
479-
displayName: Build / Test Transparent Compiler
480-
condition: and( eq(variables['System.JobName'], 'transparent_compiler_release'), ne(variables['_testKind'], 'testIntegration') )
472+
condition: eq(variables.setupVsHive, 'true')
481473

482474
- script: eng\CIBuild.cmd -compressallmetadata -configuration $(_configuration) -$(_testKind)
483475
env:
484476
DOTNET_DbgEnableMiniDump: 1
485477
DOTNET_DbgMiniDumpType: 3 # Triage dump, 1 for mini, 2 for Heap, 3 for triage, 4 for full. Don't use 4 unless you know what you're doing.
486478
DOTNET_DbgMiniDumpName: $(Build.SourcesDirectory)\artifacts\log\$(_configuration)\$(Build.BuildId)-%e-%p-%t.dmp
487479
NativeToolsOnMachine: true
488-
displayName: Build / Integration Test
489-
continueOnError: true
490-
condition: eq(variables['_testKind'], 'testIntegration')
480+
displayName: Build and Test $(_testKind) $(transparentCompiler)
491481

492482
- task: PublishTestResults@2
493483
displayName: Publish Test Results
494484
inputs:
495485
testResultsFormat: 'XUnit'
496-
testRunTitle: WindowsCompressedMetadata $(_testKind)
486+
testRunTitle: WindowsCompressedMetadata $(_testKind) $(transparentCompiler)
497487
mergeTestResults: true
498488
testResultsFiles: '*.xml'
499489
searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_configuration)'
@@ -505,7 +495,7 @@ stages:
505495
continueOnError: true
506496
inputs:
507497
PathToPublish: '$(Build.SourcesDirectory)\artifacts\log/$(_configuration)\Build.VisualFSharp.sln.binlog'
508-
ArtifactName: 'Windows $(_configuration) $(_testKind) test binlogs'
498+
ArtifactName: Windows $(_configuration) $(_testKind) $(transparentCompiler) test binlogs
509499
ArtifactType: Container
510500
parallel: true
511501
- task: PublishBuildArtifacts@1
@@ -521,7 +511,7 @@ stages:
521511
displayName: Publish Test Logs
522512
inputs:
523513
PathtoPublish: '$(Build.SourcesDirectory)\artifacts\TestResults\$(_configuration)'
524-
ArtifactName: 'Windows $(_configuration) $(_testKind) test logs'
514+
ArtifactName: Windows $(_configuration) $(_testKind) $(transparentCompilerSuffix) test logs
525515
publishLocation: Container
526516
continueOnError: true
527517
condition: always()
@@ -537,6 +527,84 @@ stages:
537527
continueOnError: true
538528
condition: failed()
539529

530+
# Windows With Compressed Metadata Desktop
531+
- job: WindowsCompressedMetadata_Desktop
532+
variables:
533+
- name: XUNIT_LOGS
534+
value: $(Build.SourcesDirectory)\artifacts\TestResults\Release
535+
- name: __VSNeverShowWhatsNew
536+
value: 1
537+
pool:
538+
# The PR build definition sets this variable:
539+
# WindowsMachineQueueName=Windows.vs2022.amd64.open
540+
# and there is an alternate build definition that sets this to a queue that is always scouting the
541+
# next preview of Visual Studio.
542+
name: $(DncEngPublicBuildPool)
543+
demands: ImageOverride -equals $(WindowsMachineQueueName)
544+
timeoutInMinutes: 120
545+
strategy:
546+
parallel: 4
547+
548+
steps:
549+
- checkout: self
550+
clean: true
551+
552+
- script: eng\CIBuild.cmd -compressallmetadata -configuration Release -testDesktop -testBatch $(System.JobPositionInPhase)
553+
env:
554+
DOTNET_DbgEnableMiniDump: 1
555+
DOTNET_DbgMiniDumpType: 3 # Triage dump, 1 for mini, 2 for Heap, 3 for triage, 4 for full. Don't use 4 unless you know what you're doing.
556+
DOTNET_DbgMiniDumpName: $(Build.SourcesDirectory)\artifacts\log\Release\$(Build.BuildId)-%e-%p-%t.dmp
557+
NativeToolsOnMachine: true
558+
displayName: Build / Test
559+
560+
- task: PublishTestResults@2
561+
displayName: Publish Test Results
562+
inputs:
563+
testResultsFormat: 'XUnit'
564+
testRunTitle: WindowsCompressedMetadata testDesktop batch $(System.JobPositionInPhase)
565+
mergeTestResults: true
566+
testResultsFiles: '*.xml'
567+
searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/Release'
568+
continueOnError: true
569+
570+
- task: PublishBuildArtifacts@1
571+
displayName: Publish BinLog
572+
condition: eq(variables['System.JobPositionInPhase'], 1)
573+
continueOnError: true
574+
inputs:
575+
PathToPublish: '$(Build.SourcesDirectory)\artifacts\log/Release\Build.VisualFSharp.sln.binlog'
576+
ArtifactName: 'Windows testDesktop binlogs'
577+
ArtifactType: Container
578+
parallel: true
579+
- task: PublishBuildArtifacts@1
580+
displayName: Publish Dumps
581+
condition: failed()
582+
continueOnError: true
583+
inputs:
584+
PathToPublish: '$(Build.SourcesDirectory)\artifacts\log\Release'
585+
ArtifactName: 'Windows testDesktop process dumps $(System.JobPositionInPhase)'
586+
ArtifactType: Container
587+
parallel: true
588+
- task: PublishBuildArtifacts@1
589+
displayName: Publish Test Logs
590+
inputs:
591+
PathtoPublish: '$(Build.SourcesDirectory)\artifacts\TestResults\Release'
592+
ArtifactName: 'Windows testDesktop test logs batch $(System.JobPositionInPhase)'
593+
publishLocation: Container
594+
continueOnError: true
595+
condition: always()
596+
- script: dotnet build $(Build.SourcesDirectory)/eng/DumpPackageRoot/DumpPackageRoot.csproj
597+
displayName: Dump NuGet cache contents
598+
condition: failed()
599+
- task: PublishBuildArtifacts@1
600+
displayName: Publish NuGet cache contents
601+
inputs:
602+
PathtoPublish: '$(Build.SourcesDirectory)\artifacts\NugetPackageRootContents'
603+
ArtifactName: 'NuGetPackageContents Windows testDesktop $(System.JobPositionInPhase)'
604+
publishLocation: Container
605+
continueOnError: true
606+
condition: failed()
607+
540608
# Mock official build
541609
- job: MockOfficial
542610
pool:

0 commit comments

Comments
 (0)