From 936d2406784931b22b3755b0ff9972fbc37c8be8 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
 <41898282+github-actions[bot]@users.noreply.github.com>
Date: Fri, 10 Sep 2021 22:41:59 +0000
Subject: [PATCH] [release/6.0] Capture `dotnet` dumps (#36392)

Capture dotnet dumps
- backport of #36385
- capture `dotnet` dumps
  - builds are failing soon after `dotnet msbuild` launch
- do not upload dumps twice

nit: Remove disabled explicit component detection job
---
 .azure/pipelines/ci.yml                 |  4 ---
 .azure/pipelines/jobs/default-build.yml | 33 +++++++++++++++----------
 2 files changed, 20 insertions(+), 17 deletions(-)

diff --git a/.azure/pipelines/ci.yml b/.azure/pipelines/ci.yml
index 1c73eda5a94..31fe503a5ee 100644
--- a/.azure/pipelines/ci.yml
+++ b/.azure/pipelines/ci.yml
@@ -661,10 +661,6 @@ stages:
         - powershell: "& ./src/Servers/IIS/tools/UpdateIISExpressCertificate.ps1; & ./src/Servers/IIS/tools/update_schema.ps1"
           displayName: Setup IISExpress test certificates and schema
         artifacts:
-        - name: Windows_Test_Dumps
-          path: artifacts/dumps/
-          publishOnError: true
-          includeForks: true
         - name: Windows_Test_Logs
           path: artifacts/log/
           publishOnError: true
diff --git a/.azure/pipelines/jobs/default-build.yml b/.azure/pipelines/jobs/default-build.yml
index 4f03f73e137..a4f57a3dba9 100644
--- a/.azure/pipelines/jobs/default-build.yml
+++ b/.azure/pipelines/jobs/default-build.yml
@@ -135,6 +135,8 @@ jobs:
       - BuildDirectory: $(System.DefaultWorkingDirectory)
     - ${{ if ne(parameters.buildDirectory, '') }}:
       - BuildDirectory: ${{ parameters.buildDirectory }}
+    - COMPlus_DbgEnableMiniDump: 1
+    - COMPlus_DbgMiniDumpName: "$(System.DefaultWorkingDirectory)/dotnet-%d.%t.core"
     - DOTNET_CLI_HOME: $(System.DefaultWorkingDirectory)
     - DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
     - TeamName: AspNetCore
@@ -261,24 +263,29 @@ jobs:
         condition: always()
 
     # Run component detection after all successful Build:* jobs unless overridden e.g. for Alpine build.
-    # Disabled for now because detector limits some error handling to the auto-injected task. Will re-enable once fixed.
-    - ${{ if and(startsWith(parameters.jobDisplayName, 'Build:'), eq(parameters.agentOs, 'NotARealOperatingSystem'), ne(variables['skipComponentGovernanceDetection'], 'true'), ne(parameters.skipComponentGovernanceDetection, 'true'), notin(variables['Build.Reason'], 'PullRequest')) }}:
-      - task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
-        condition: and(succeeded(), ne(variables['CG_RAN'], 'true'))
-        displayName: 'Component Detection'
-        inputs:
-          ${{ if eq(parameters.agentOs, 'Windows') }}:
-            ignoreDirectories: '.dotnet,.packages,artifacts\log,artifacts\symbols,artifacts\tmp'
-          ${{ if ne(parameters.agentOs, 'Windows') }}:
-            ignoreDirectories: '.dotnet,.packages,artifacts/log,artifacts/symbols,artifacts/tmp'
-          sourceScanPath: $(Build.SourcesDirectory)
-          verbosity: Verbose
     # Make sure auto-injected component detection does _not_ execute in other jobs nor when overridden.
-    # No need to recheck variables or build reason because auto-injected component detection honors those values.
     - ${{ if or(not(startsWith(parameters.jobDisplayName, 'Build:')), eq(parameters.skipComponentGovernanceDetection, 'true')) }}:
       - script:  echo "##vso[task.setvariable variable=CG_RAN]true"
         displayName: 'Skip Component Detection'
 
+    - task: CopyFiles@2
+      displayName: Create dump directory
+      condition: always()
+      continueOnError: true
+      inputs:
+        contents: '*.core'
+        sourceFolder: $(System.DefaultWorkingDirectory)
+        targetFolder: artifacts/dumps/
+    - task: PublishBuildArtifacts@1
+      displayName: Upload dump files
+      condition: always()
+      continueOnError: true
+      inputs:
+        artifactName: ${{ coalesce(parameters.jobName, parameters.agentOs) }}_Dumps
+        artifactType: Container
+        parallel: true
+        pathtoPublish: artifacts/dumps/
+
     - ${{ each artifact in parameters.artifacts }}:
       - task: PublishBuildArtifacts@1
         displayName: Upload artifacts from ${{ artifact.path }}
-- 
GitLab