From e280884a94e5349bafebfed2073b1cd00d0ce1ad Mon Sep 17 00:00:00 2001
From: Hao Kung <HaoK@users.noreply.github.com>
Date: Mon, 29 Jun 2020 11:18:04 -0700
Subject: [PATCH] Create a new pipeline that runs PR queue tests more often
 (#23410)

---
 .azure/pipelines/quarantined-pr.yml | 149 ++++++++++++++++++++++++++++
 1 file changed, 149 insertions(+)
 create mode 100644 .azure/pipelines/quarantined-pr.yml

diff --git a/.azure/pipelines/quarantined-pr.yml b/.azure/pipelines/quarantined-pr.yml
new file mode 100644
index 00000000000..d6e4b61ed2f
--- /dev/null
+++ b/.azure/pipelines/quarantined-pr.yml
@@ -0,0 +1,149 @@
+# We want to run quarantined tests on master as well as on PRs
+trigger:
+  batch: true
+  branches:
+    include:
+    - master
+
+schedules:
+- cron: "0 */4 * * *"
+  displayName: Every 4 hours test run
+  branches:
+    include:
+    - master
+  always: true
+
+variables:
+- ${{ if ne(variables['System.TeamProject'], 'internal') }}:
+  - name: _UseHelixOpenQueues
+    value: 'true'
+- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
+  - group: DotNet-HelixApi-Access
+  - name: _UseHelixOpenQueues
+    value: 'false'
+
+jobs:
+- template: jobs/default-build.yml
+  parameters:
+    jobName: Helix_quarantined_x64
+    jobDisplayName: 'Tests: Helix'
+    agentOs: Windows
+    timeoutInMinutes: 240
+    steps:
+    # Build the shared framework
+    - script: ./build.cmd -ci -nobl -all -pack -arch x64 /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log
+      displayName: Build shared fx
+    - script: ./build.cmd -ci -nobl -noBuildRepoTasks -restore -noBuild -noBuildNative -projects src/Grpc/**/*.csproj
+      displayName: Restore interop projects
+    - script: ./build.cmd -ci -nobl -noBuildRepoTasks -noRestore -test -all -noBuildJava -noBuildNative
+              -projects eng\helix\helix.proj /p:RunQuarantinedTests=true /p:IsRequiredCheck=true /p:IsHelixJob=true
+              /p:BuildInteropProjects=true /p:RunTemplateTests=true /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log
+      displayName: Run build.cmd helix target
+      continueOnError: true
+      env:
+        HelixApiAccessToken: $(HelixApiAccessToken) # Needed for internal queues
+        SYSTEM_ACCESSTOKEN: $(System.AccessToken) # We need to set this env var to publish helix results to Azure Dev Ops
+    artifacts:
+    - name: Helix_logs
+      path: artifacts/log/
+      publishOnError: true
+
+- template: jobs/default-build.yml
+  parameters:
+    jobName: Windows_Quarantined_x64
+    jobDisplayName: 'Tests: Windows x64'
+    agentOs: Windows
+    timeoutInMinutes: 240
+    isTestingJob: true
+    steps:
+    - powershell: "& ./build.ps1 -CI -nobl -all -pack -NoBuildJava"
+      displayName: Build
+    # The templates part can be removed when the Blazor Templates run on Helix
+    - script: ./src/ProjectTemplates/build.cmd -ci -nobl -pack -NoRestore -NoBuilddeps "/p:RunTemplateTests=true"
+      displayName: Pack Templates
+    - script: ./build.cmd -ci -nobl -test -NoRestore -NoBuild -NoBuilddeps "/p:RunTemplateTests=true /p:RunQuarantinedTests=true /p:SkipHelixReadyTests=true"
+      displayName: Run Quarantined Tests
+      continueOnError: true
+    - task: PublishTestResults@2
+      displayName: Publish Quarantined Test Results
+      inputs:
+        testResultsFormat: 'xUnit'
+        testResultsFiles: '*.xml'
+        searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)/Quarantined'
+      condition: always()
+    artifacts:
+    - name: Windows_Quarantined_Test_Logs
+      path: artifacts/log/
+      publishOnError: true
+      includeForks: true
+    - name: Windows_Quarantined_Test_Results
+      path: artifacts/TestResults/
+      publishOnError: true
+      includeForks: true
+
+- template: jobs/default-build.yml
+  parameters:
+    jobName: MacOS_Quarantined_Test
+    jobDisplayName: "Tests: macOS 10.14"
+    agentOs: macOS
+    timeoutInMinutes: 240
+    isTestingJob: true
+    steps:
+    - bash: ./build.sh --all --pack --ci --nobl --no-build-java
+      displayName: Build
+    # The templates part can be removed when the Blazor Templates run on Helix
+    - bash: ./src/ProjectTemplates/build.sh --ci --nobl --pack --no-restore --no-build-deps
+      displayName: Pack Templates (for Template tests)
+    - bash: ./build.sh --no-build --ci --nobl --test -p:RunTemplateTests=true -p:RunQuarantinedTests=true -p:SkipHelixReadyTests=true
+      displayName: Run Quarantined Tests
+      continueOnError: true
+    - task: PublishTestResults@2
+      displayName: Publish Quarantined Test Results
+      inputs:
+        testResultsFormat: 'xUnit'
+        testResultsFiles: '*.xml'
+        searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)/Quarantined'
+      condition: always()
+    artifacts:
+    - name: MacOS_Quarantined_Test_Logs
+      path: artifacts/log/
+      publishOnError: true
+      includeForks: true
+    - name: MacOS_Quarantined_Test_Results
+      path: artifacts/TestResults/
+      publishOnError: true
+      includeForks: true
+
+- template: jobs/default-build.yml
+  parameters:
+    jobName: Linux_Quarantined_Test
+    jobDisplayName: "Tests: Ubuntu 16.04 x64"
+    agentOs: Linux
+    timeoutInMinutes: 240
+    isTestingJob: true
+    useHostedUbuntu: false
+    steps:
+    - bash: ./build.sh --all --pack --ci --nobl --no-build-java
+      displayName: Build
+    # The templates part can be removed when the Blazor Templates run on Helix
+    - bash: ./src/ProjectTemplates/build.sh --ci --nobl --pack --no-restore --no-build-deps
+      displayName: Pack Templates (for Template tests)
+    - bash: ./build.sh --no-build --ci --nobl --test -p:RunTemplateTests=true -p:RunQuarantinedTests=true -p:SkipHelixReadyTests=true
+      displayName: Run Quarantined Tests
+      continueOnError: true
+    - task: PublishTestResults@2
+      displayName: Publish Quarantined Test Results
+      inputs:
+        testResultsFormat: 'xUnit'
+        testResultsFiles: '*.xml'
+        searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)/Quarantined'
+      condition: always()
+    artifacts:
+    - name: Linux_Quarantined_Test_Logs
+      path: artifacts/log/
+      publishOnError: true
+      includeForks: true
+    - name: Linux_Quarantined_Test_Results
+      path: artifacts/TestResults/
+      publishOnError: true
+      includeForks: true
-- 
GitLab