@@ -5,6 +5,13 @@ parameters:
55 displayName : Diagnostics Branch
66 type : string
77 default : main
8+ - name : cdacDumpPlatforms
9+ displayName : cDAC Dump Platforms
10+ type : object
11+ default :
12+ - windows_x64
13+ - linux_x64
14+ # - osx_x64 # Temporarily due to CI capacity constraints. Will re-enable once osx queues are more available.
815
916resources :
1017 repositories :
@@ -103,8 +110,15 @@ extends:
103110 - task : PublishPipelineArtifact@1
104111 inputs :
105112 targetPath : ' $(Build.SourcesDirectory)/artifacts/tmp/$(_BuildConfig)/dumps'
106- artifactName : Dumps_$(_PhaseName)_Attempt$(System.JobAttempt)
107- displayName : ' Publish Dumps on Failure'
113+ artifactName : ' Dumps_cDAC_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)_Attempt$(System.JobAttempt)'
114+ displayName : ' Publish Crash Dumps'
115+ continueOnError : true
116+ condition : failed()
117+ - task : PublishPipelineArtifact@1
118+ inputs :
119+ targetPath : ' $(Build.SourcesDirectory)/artifacts/TestResults'
120+ artifactName : ' TestResults_cDAC_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)_Attempt$(System.JobAttempt)'
121+ displayName : ' Publish Test Results and SOS Logs'
108122 continueOnError : true
109123 condition : failed()
110124 - template : /eng/pipelines/common/platform-matrix.yml
@@ -144,7 +158,99 @@ extends:
144158 - task : PublishPipelineArtifact@1
145159 inputs :
146160 targetPath : ' $(Build.SourcesDirectory)/artifacts/tmp/$(_BuildConfig)/dumps'
147- artifactName : Dumps_$(_PhaseName)_Attempt$(System.JobAttempt)
148- displayName : ' Publish Dumps on Failure'
161+ artifactName : ' Dumps_DAC_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)_Attempt$(System.JobAttempt)'
162+ displayName : ' Publish Crash Dumps'
163+ continueOnError : true
164+ condition : failed()
165+ - task : PublishPipelineArtifact@1
166+ inputs :
167+ targetPath : ' $(Build.SourcesDirectory)/artifacts/TestResults'
168+ artifactName : ' TestResults_DAC_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)_Attempt$(System.JobAttempt)'
169+ displayName : ' Publish Test Results and SOS Logs'
149170 continueOnError : true
150171 condition : failed()
172+
173+ #
174+ # cDAC Dump Creation — Build runtime, create crash dumps, publish dump artifacts
175+ #
176+ - stage : DumpCreation
177+ dependsOn : []
178+ jobs :
179+ - template : /eng/pipelines/common/platform-matrix.yml
180+ parameters :
181+ jobTemplate : /eng/pipelines/common/global-build-job.yml
182+ buildConfig : release
183+ platforms : ${{ parameters.cdacDumpPlatforms }}
184+ jobParameters :
185+ buildArgs : -s clr+libs+tools.cdac -c $(_BuildConfig) -rc $(_BuildConfig) -lc $(_BuildConfig)
186+ nameSuffix : CdacDumpGeneration
187+ timeoutInMinutes : 120
188+ postBuildSteps :
189+ - script : $(Build.SourcesDirectory)$(dir).dotnet$(dir)dotnet$(exeExt) msbuild
190+ $(Build.SourcesDirectory)/src/native/managed/cdac/tests/DumpTests/Microsoft.Diagnostics.DataContractReader.DumpTests.csproj
191+ /t:GenerateAllDumps
192+ /p:CIDumpVersionsOnly=true
193+ /p:SetDisableAuxProviderSignatureCheck=true
194+ /p:TargetArchitecture=$(archType)
195+ -bl:$(Build.SourcesDirectory)/artifacts/log/DumpGeneration.binlog
196+ displayName : ' Generate cDAC Dumps'
197+ - template : /eng/pipelines/common/upload-artifact-step.yml
198+ parameters :
199+ rootFolder : $(Build.SourcesDirectory)/artifacts/dumps/cdac
200+ includeRootFolder : false
201+ archiveType : tar
202+ archiveExtension : .tar.gz
203+ tarCompression : gz
204+ artifactName : CdacDumps_$(osGroup)_$(archType)
205+ displayName : cDAC Dump Artifacts
206+
207+ #
208+ # cDAC Dump Tests — Download dumps from all platforms, run tests cross-platform
209+ #
210+ - stage : DumpTest
211+ dependsOn :
212+ - DumpCreation
213+ jobs :
214+ - template : /eng/pipelines/common/platform-matrix.yml
215+ parameters :
216+ jobTemplate : /eng/pipelines/common/global-build-job.yml
217+ buildConfig : release
218+ platforms : ${{ parameters.cdacDumpPlatforms }}
219+ jobParameters :
220+ buildArgs : -s tools.cdacdumptests /p:SkipDumpVersions=net10.0
221+ nameSuffix : CdacDumpTests
222+ timeoutInMinutes : 60
223+ postBuildSteps :
224+ # Download and test against dumps from each platform
225+ - ${{ each dumpPlatform in parameters.cdacDumpPlatforms }} :
226+ - template : /eng/pipelines/common/download-artifact-step.yml
227+ parameters :
228+ artifactName : CdacDumps_${{ dumpPlatform }}
229+ artifactFileName : CdacDumps_${{ dumpPlatform }}.tar.gz
230+ unpackFolder : $(Build.SourcesDirectory)/artifacts/dumps/${{ dumpPlatform }}
231+ displayName : ' ${{ dumpPlatform }} Dumps'
232+ - script : $(Build.SourcesDirectory)$(dir).dotnet$(dir)dotnet$(exeExt) test
233+ $(Build.SourcesDirectory)/src/native/managed/cdac/tests/DumpTests/Microsoft.Diagnostics.DataContractReader.DumpTests.csproj
234+ --no-build
235+ --logger "trx;LogFileName=CdacDumpTests_${{ dumpPlatform }}.trx"
236+ --results-directory $(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)/${{ dumpPlatform }}
237+ displayName : ' Run cDAC Dump Tests (${{ dumpPlatform }} dumps)'
238+ continueOnError : true
239+ env :
240+ CDAC_DUMP_ROOT : $(Build.SourcesDirectory)/artifacts/dumps/${{ dumpPlatform }}
241+ - task : PublishTestResults@2
242+ displayName : ' Publish Results ($(osGroup)-$(archType) → ${{ dumpPlatform }})'
243+ inputs :
244+ testResultsFormat : VSTest
245+ testResultsFiles : ' **/*.trx'
246+ searchFolder : ' $(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)/${{ dumpPlatform }}'
247+ testRunTitle : ' cDAC Dump Tests $(osGroup)-$(archType) → ${{ dumpPlatform }}'
248+ failTaskOnFailedTests : true
249+ publishRunAttachments : true
250+ buildConfiguration : $(_BuildConfig)
251+ continueOnError : true
252+ condition : always()
253+ # Fail the job if any test or publish step above reported issues.
254+ - script : echo "One or more dump test steps failed." && exit 1
255+ displayName : ' Fail if tests failed'
256+ condition : eq(variables['Agent.JobStatus'], 'SucceededWithIssues')
0 commit comments