From a7437be2142ba76ddaddb71a57ba2d95224b6fa3 Mon Sep 17 00:00:00 2001
From: Jessica Petty <jepetty@microsoft.com>
Date: Thu, 25 Feb 2021 14:27:06 -0600
Subject: [PATCH] Add Rich Nav specific pipeline, temporarily add to ci for
 testing (#26822)

* Add Rich Nav specific pipeline, temporarily add to ci for testing
* Add Rich Code Navigation feed to Nuget.config
* Temporarily disable package reference restrictions
* Try running Rich Nav task directly
* Fix typo
* Temporarily update rich nav task to verify successful run
* Remove Rich Nav code from regular CI
* Remove unnecessary args from Rich Nav build, add language variable
* Apply fixes to Rich Nav pipeline
* Remove specific binary log build args, stop disabling package reference restrictions
* HACK HACK HACK replace existing CI with rich nav CI to test
* Begin publishing artifacts to start debugging empty files
* Explicitly set environment variable for rich navigation
* Publish binlogs
* Try manually updating arcade sdk to get new rcn package
* Upload logs even if we've failed (hopefully they exist!)
* Add RCN task to run on succeeded or failed to see what happens!
* Remove parameters that aren't defined
* Final rich nav test/assertion
* Replace normal CI and finalize Rich Nav CI script
---
 .azure/pipelines/jobs/default-build.yml |  3 ++
 .azure/pipelines/richnav.yml            | 64 +++++++++++++++++++++++++
 NuGet.config                            |  2 +
 3 files changed, 69 insertions(+)
 create mode 100644 .azure/pipelines/richnav.yml

diff --git a/.azure/pipelines/jobs/default-build.yml b/.azure/pipelines/jobs/default-build.yml
index 88f0bebc179..45a0f46cb83 100644
--- a/.azure/pipelines/jobs/default-build.yml
+++ b/.azure/pipelines/jobs/default-build.yml
@@ -77,6 +77,9 @@ jobs:
     dependsOn: ${{ parameters.dependsOn }}
     ${{ if ne(parameters.condition, '') }}:
       condition: ${{ parameters.condition }}
+    ${{ if ne(parameters.enableRichCodeNavigation, '') }}:
+      enableRichCodeNavigation: true
+      richCodeNavigationLanguage: 'csharp,typescript,java'
     timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
     cancelTimeoutInMinutes: ${{ parameters.cancelTimeoutInMinutes }}
     ${{ if and(eq(variables['System.TeamProject'], 'internal'), eq(parameters.agentOs, 'Windows'), eq(parameters.codeSign, 'true')) }}:
diff --git a/.azure/pipelines/richnav.yml b/.azure/pipelines/richnav.yml
new file mode 100644
index 00000000000..a41986ca81a
--- /dev/null
+++ b/.azure/pipelines/richnav.yml
@@ -0,0 +1,64 @@
+#
+# See https://docs.microsoft.com/en-us/vsts/pipelines/yaml-schema for details on this file.
+#
+
+# Configure which branches trigger builds
+trigger:
+  branches:
+    include:
+    - blazor-wasm
+    - master
+    - release/*
+    - internal/release/*
+
+variables:
+- name: _BuildArgs
+  value: '/p:SkipTestBuild=true'
+- name: Windows86LogArgs
+  value: -ExcludeCIBinaryLog
+
+stages:
+- stage: build
+  displayName: Build
+  jobs:
+  # Build Windows (x64/x86)
+  - template: jobs/default-build.yml
+    parameters:
+      codeSign: false
+      jobName: Windows_build
+      jobDisplayName: "Build: Windows x64/x86"
+      enableRichCodeNavigation: true
+      agentOs: Windows
+      steps:
+      - script: ./build.cmd
+                -ci
+                -all
+                -arch x64
+                /p:EnableRichCodeNavigation=true
+                $(_BuildArgs)
+        displayName: Build x64
+
+      # Build the x86 shared framework
+      # This is going to actually build x86 native assets.
+      - script: ./build.cmd
+                -ci
+                -noBuildRepoTasks
+                -arch x86
+                -all
+                -noBuildJava
+                -noBuildNative
+                /p:EnableRichCodeNavigation=true
+                $(_BuildArgs)
+                $(Windows86LogArgs)
+        displayName: Build x86
+
+      # Windows installers bundle both x86 and x64 assets
+      - script: ./build.cmd
+                -ci
+                -noBuildRepoTasks
+                -buildInstallers
+                -noBuildNative
+                /p:AssetManifestFileName=aspnetcore-win-x64-x86.xml
+                /p:EnableRichCodeNavigation=true
+                $(_BuildArgs)
+        displayName: Build Installers
diff --git a/NuGet.config b/NuGet.config
index 4b1bf8e5576..f7375b2fdcb 100644
--- a/NuGet.config
+++ b/NuGet.config
@@ -12,6 +12,8 @@
     <add key="dotnet-public" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json" />
     <!-- Used for the SiteExtension 3.1 bits that are included in the 5.0 build -->
     <add key="dotnet31-transport" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet3.1-transport/nuget/v3/index.json" />
+    <!-- Used for the Rich Navigation indexing task -->
+    <add key="richnav" value="https://pkgs.dev.azure.com/azure-public/vside/_packaging/vs-buildservices/nuget/v3/index.json" />
   </packageSources>
   <disabledPackageSources>
     <clear />
-- 
GitLab