Browse Source

Build Windows local test job in official builds (#61519)

* Run windows local dev job in internal builds

* Fixaroonie

* Only on main

* Never mind

* Don't delete project template content in CI

* -ci

* Static

* Try this

* NoBuildRepoTasks

* Maybe this

* Message

* This should work

* This shouldn't work

* Different approach

* Fix print

* This oughta do er

* Delayed

* No message
William Godbe 10 months ago
parent
commit
fac11a9e7d

+ 25 - 25
.azure/pipelines/ci.yml

@@ -534,32 +534,32 @@ extends:
           parameters:
             inputName: Linux_musl_arm64
 
+      - template: .azure/pipelines/jobs/default-build.yml@self
+        parameters:
+          jobName: Windows_Test
+          jobDisplayName: "Test: Windows Server x64"
+          agentOs: Windows
+          isAzDOTestingJob: true
+          # Just uploading artifacts/logs/ files can take 15 minutes. Doubling the cancel timeout for this job.
+          cancelTimeoutInMinutes: 30
+          buildArgs: -all -pack -test -binaryLog /p:SkipHelixReadyTests=true /p:SkipIISNewHandlerTests=true /p:SkipIISTests=true
+                     /p:SkipIISExpressTests=true /p:SkipIISNewShimTests=true /p:RunBlazorPlaywrightTemplateTests=true /p:DoNotCleanUpTemplates=true
+                     $(_InternalRuntimeDownloadArgs)
+          beforeBuild:
+          - 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_Logs_Attempt_$(System.JobAttempt)
+            path: artifacts/log/
+            publishOnError: true
+            includeForks: true
+          - name: Windows_Test_Results_Attempt_$(System.JobAttempt)
+            path: artifacts/TestResults/
+            publishOnError: true
+            includeForks: true
+
       - ${{ if and(ne(parameters.skipTests, 'true'), in(variables['Build.Reason'], 'PullRequest', 'Manual')) }}:
         # Test jobs
-        - template: .azure/pipelines/jobs/default-build.yml@self
-          parameters:
-            jobName: Windows_Test
-            jobDisplayName: "Test: Windows Server x64"
-            agentOs: Windows
-            isAzDOTestingJob: true
-            # Just uploading artifacts/logs/ files can take 15 minutes. Doubling the cancel timeout for this job.
-            cancelTimeoutInMinutes: 30
-            buildArgs: -all -pack -test -binaryLog /p:SkipHelixReadyTests=true /p:SkipIISNewHandlerTests=true /p:SkipIISTests=true
-                       /p:SkipIISExpressTests=true /p:SkipIISNewShimTests=true /p:RunTemplateTests=false /p:RunBlazorPlaywrightTemplateTests=true
-                       $(_InternalRuntimeDownloadArgs)
-            beforeBuild:
-            - 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_Logs_Attempt_$(System.JobAttempt)
-              path: artifacts/log/
-              publishOnError: true
-              includeForks: true
-            - name: Windows_Test_Results_Attempt_$(System.JobAttempt)
-              path: artifacts/TestResults/
-              publishOnError: true
-              includeForks: true
-
         - template: .azure/pipelines/jobs/default-build.yml@self
           parameters:
             jobName: MacOS_Test
@@ -748,4 +748,4 @@ extends:
           enableSigningValidation: false
           enableNugetValidation: false
           publishInstallersAndChecksums: true
-          publishAssetsImmediately: true
+          publishAssetsImmediately: true

+ 1 - 1
Directory.Build.targets

@@ -119,7 +119,7 @@
     <IsPackable Condition="'$(IsPackable)' == '' ">false</IsPackable>
 
     <BuildHelixPayload Condition="'$(BuildHelixPayload)' == '' AND $(IsTestProject) ">true</BuildHelixPayload>
-    <SkipTests Condition="'$(SkipHelixReadyTests)' == 'true' AND '$(BuildHelixPayload)' == 'true'">true</SkipTests>
+    <SkipTests Condition="'$(SkipTests)' == '' AND '$(SkipHelixReadyTests)' == 'true' AND '$(BuildHelixPayload)' == 'true'">true</SkipTests>
   </PropertyGroup>
 
   <PropertyGroup>

+ 4 - 0
eng/RequiresDelayedBuildProjects.props

@@ -22,6 +22,10 @@
     <RequiresDelayedBuild Include="$(RepoRoot)src\Grpc\JsonTranscoding\test\testassets\Sandbox\Sandbox.csproj" />
     <RequiresDelayedBuild Include="$(RepoRoot)src\OpenApi\test\Microsoft.AspNetCore.OpenApi.NativeAotTests\Microsoft.AspNetCore.OpenApi.NativeAotTests.proj" />
     <RequiresDelayedBuild Include="$(RepoRoot)src\ProjectTemplates\test\Templates.Blazor.Tests\Templates.Blazor.Tests.csproj" />
+    <RequiresDelayedBuild Include="$(RepoRoot)src\ProjectTemplates\test\Templates.Blazor.WebAssembly.Auth.Tests\Templates.Blazor.WebAssembly.Auth.Tests.csproj" />
+    <RequiresDelayedBuild Include="$(RepoRoot)src\ProjectTemplates\test\Templates.Blazor.WebAssembly.Tests\Templates.Blazor.WebAssembly.Tests.csproj" />
+    <RequiresDelayedBuild Include="$(RepoRoot)src\ProjectTemplates\test\Templates.Mvc.Tests\Templates.Mvc.Tests.csproj" />
+    <RequiresDelayedBuild Include="$(RepoRoot)src\ProjectTemplates\test\Templates.Tests\Templates.Tests.csproj" />
     <RequiresDelayedBuild Include="$(RepoRoot)src\SignalR\server\SignalR\test\Microsoft.AspNetCore.SignalR.TrimmingTests\Microsoft.AspNetCore.SignalR.TrimmingTests.proj" />
     <RequiresDelayedBuild Include="$(RepoRoot)eng\Npm.Workspace.FunctionalTests.nodeproj" />
   </ItemGroup>

+ 7 - 1
src/ProjectTemplates/Shared/Project.cs

@@ -426,7 +426,13 @@ public class Project : IDisposable
 
     public void Dispose()
     {
-        DeleteOutputDirectory();
+        var doNotCleanUpTemplates = typeof(ProjectFactoryFixture).Assembly.GetCustomAttributes<AssemblyMetadataAttribute>()
+            .Single(attribute => attribute.Key == "DoNotCleanUpTemplates")
+            .Value;
+        if (string.Equals(doNotCleanUpTemplates, "false", StringComparison.OrdinalIgnoreCase))
+        {
+            DeleteOutputDirectory();
+        }
     }
 
     public void DeleteOutputDirectory()

+ 8 - 0
src/ProjectTemplates/TestInfrastructure/PrepareForTest.targets

@@ -20,6 +20,14 @@
       <_Parameter1>ContinuousIntegrationBuild</_Parameter1>
       <_Parameter2>true</_Parameter2>
     </AssemblyAttribute>
+    <AssemblyAttribute Include="System.Reflection.AssemblyMetadataAttribute" Condition="'$(DoNotCleanUpTemplates)' == 'true'">
+      <_Parameter1>DoNotCleanUpTemplates</_Parameter1>
+      <_Parameter2>true</_Parameter2>
+    </AssemblyAttribute>
+    <AssemblyAttribute Include="System.Reflection.AssemblyMetadataAttribute" Condition="'$(DoNotCleanUpTemplates)' != 'true'">
+      <_Parameter1>DoNotCleanUpTemplates</_Parameter1>
+      <_Parameter2>false</_Parameter2>
+    </AssemblyAttribute>
   </ItemGroup>
 
     <Target Name="GenerateTesDevCert" BeforeTargets="AssignTargetPaths">

+ 1 - 0
src/ProjectTemplates/test/Templates.Blazor.Tests/Templates.Blazor.Tests.csproj

@@ -9,6 +9,7 @@
     <RunTemplateTests Condition="'$(RunTemplateTests)' == ''">true</RunTemplateTests>
     <RunBlazorPlaywrightTemplateTests Condition="'$(RunBlazorPlaywrightTemplateTests)' == ''">$(RunTemplateTests)</RunBlazorPlaywrightTemplateTests>
     <SkipTests Condition="'$(RunBlazorPlaywrightTemplateTests)' != 'true'">true</SkipTests>
+    <SkipTests Condition="'$(RunBlazorPlaywrightTemplateTests)' == 'true'">false</SkipTests>
     <BuildHelixPayload Condition="'$(RunBlazorPlaywrightTemplateTests)' != 'true'">false</BuildHelixPayload>
 
     <BaseOutputPath />

+ 3 - 0
src/ProjectTemplates/test/Templates.Blazor.WebAssembly.Auth.Tests/Templates.Blazor.WebAssembly.Auth.Tests.csproj

@@ -7,8 +7,11 @@
     <TestGroupName>ProjectTemplates.Blazor.WebAssembly.Auth.Tests</TestGroupName>
     <DefineConstants>$(DefineConstants);XPLAT</DefineConstants>
 
+    <RequiresDelayedBuild>true</RequiresDelayedBuild>
+
     <RunTemplateTests Condition="'$(RunTemplateTests)' == ''">true</RunTemplateTests>
     <SkipTests Condition="'$(RunTemplateTests)' != 'true'">true</SkipTests>
+    <SkipTests Condition="'$(RunTemplateTests)' == 'true'">false</SkipTests>
     <BuildHelixPayload Condition="'$(RunTemplateTests)' != 'true'">false</BuildHelixPayload>
 
     <BaseOutputPath />

+ 3 - 0
src/ProjectTemplates/test/Templates.Blazor.WebAssembly.Tests/Templates.Blazor.WebAssembly.Tests.csproj

@@ -7,8 +7,11 @@
     <TestGroupName>ProjectTemplates.Blazor.WebAssembly.Tests</TestGroupName>
     <DefineConstants>$(DefineConstants);XPLAT</DefineConstants>
 
+    <RequiresDelayedBuild>true</RequiresDelayedBuild>
+
     <RunTemplateTests Condition="'$(RunTemplateTests)' == ''">true</RunTemplateTests>
     <SkipTests Condition="'$(RunTemplateTests)' != 'true'">true</SkipTests>
+    <SkipTests Condition="'$(RunTemplateTests)' == 'true'">false</SkipTests>
     <BuildHelixPayload Condition="'$(RunTemplateTests)' != 'true'">false</BuildHelixPayload>
 
     <BaseOutputPath />

+ 3 - 0
src/ProjectTemplates/test/Templates.Mvc.Tests/Templates.Mvc.Tests.csproj

@@ -7,8 +7,11 @@
     <TestGroupName>ProjectTemplates.Mvc.Tests</TestGroupName>
     <DefineConstants>$(DefineConstants);XPLAT</DefineConstants>
 
+    <RequiresDelayedBuild>true</RequiresDelayedBuild>
+
     <RunTemplateTests Condition="'$(RunTemplateTests)' == ''">true</RunTemplateTests>
     <SkipTests Condition="'$(RunTemplateTests)' != 'true'">true</SkipTests>
+    <SkipTests Condition="'$(RunTemplateTests)' == 'true'">false</SkipTests>
     <BuildHelixPayload Condition="'$(RunTemplateTests)' != 'true'">false</BuildHelixPayload>
 
     <BaseOutputPath />

+ 3 - 0
src/ProjectTemplates/test/Templates.Tests/Templates.Tests.csproj

@@ -7,8 +7,11 @@
     <TestGroupName>ProjectTemplates.Tests</TestGroupName>
     <DefineConstants>$(DefineConstants);XPLAT</DefineConstants>
 
+    <RequiresDelayedBuild>true</RequiresDelayedBuild>
+
     <RunTemplateTests Condition="'$(RunTemplateTests)' == ''">true</RunTemplateTests>
     <SkipTests Condition="'$(RunTemplateTests)' != 'true'">true</SkipTests>
+    <SkipTests Condition="'$(RunTemplateTests)' == 'true'">false</SkipTests>
     <BuildHelixPayload Condition="'$(RunTemplateTests)' != 'true'">false</BuildHelixPayload>
 
     <BaseOutputPath />