Skip to content

Commit a806ae6

Browse files
authored
Add helix-matrix.yml and windows arm 64 helix queue (#22002)
1 parent f17fcfd commit a806ae6

File tree

12 files changed

+94
-66
lines changed

12 files changed

+94
-66
lines changed

.azure/pipelines/ci.yml

Lines changed: 0 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -646,54 +646,6 @@ stages:
646646
publishOnError: true
647647
includeForks: true
648648

649-
- template: jobs/default-build.yml
650-
parameters:
651-
condition: notin(variables['Build.Reason'], 'PullRequest')
652-
jobName: Helix_x64_daily
653-
jobDisplayName: 'Tests: Helix x64 Daily'
654-
agentOs: Windows
655-
timeoutInMinutes: 180
656-
steps:
657-
# Build the shared framework
658-
- script: ./build.cmd -ci -nobl -all -pack -arch x64 /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log
659-
displayName: Build shared fx
660-
- script: .\restore.cmd -ci -nobl /p:BuildInteropProjects=true
661-
displayName: Restore interop projects
662-
- script: .\build.cmd -ci -nobl -NoRestore -test -all -projects eng\helix\helix.proj /p:IsHelixJob=true /p:IsHelixDaily=true /p:BuildInteropProjects=true /p:RunTemplateTests=true /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log
663-
displayName: Run build.cmd helix target
664-
env:
665-
HelixApiAccessToken: $(HelixApiAccessToken) # Needed for internal queues
666-
SYSTEM_ACCESSTOKEN: $(System.AccessToken) # We need to set this env var to publish helix results to Azure Dev Ops
667-
artifacts:
668-
- name: Helix_logs
669-
path: artifacts/log/
670-
publishOnError: true
671-
includeForks: true
672-
673-
# Helix ARM64
674-
- template: jobs/default-build.yml
675-
parameters:
676-
condition: and(eq(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'))
677-
jobName: Helix_arm64_daily
678-
jobDisplayName: "Tests: Helix ARM64 Daily"
679-
agentOs: Linux
680-
timeoutInMinutes: 180
681-
steps:
682-
# Build the shared framework
683-
- script: ./restore.sh -ci -nobl
684-
displayName: Restore
685-
- script: ./build.sh -ci --nobl --arch arm64 -test --no-build-nodejs --all -projects $(Build.SourcesDirectory)/eng/helix/helix.proj /p:IsHelixJob=true /p:IsHelixDaily=true /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log
686-
displayName: Run build.sh helix arm64 target
687-
env:
688-
HelixApiAccessToken: $(HelixApiAccessToken) # Needed for internal queues
689-
SYSTEM_ACCESSTOKEN: $(System.AccessToken) # We need to set this env var to publish helix results to Azure Dev Ops
690-
installNodeJs: false
691-
artifacts:
692-
- name: Helix_arm64_logs
693-
path: artifacts/log/
694-
publishOnError: true
695-
includeForks: true
696-
697649
# Source build
698650
- job: Source_Build
699651
displayName: 'Test: Linux Source Build'

.azure/pipelines/helix-matrix.yml

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# We only want to run full helix matrix on master
2+
pr: none
3+
trigger: none
4+
schedules:
5+
- cron: "0 */12 * * *"
6+
branches:
7+
include:
8+
- master
9+
always: true
10+
11+
variables:
12+
- ${{ if ne(variables['System.TeamProject'], 'internal') }}:
13+
- name: _UseHelixOpenQueues
14+
value: 'true'
15+
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
16+
- group: DotNet-HelixApi-Access
17+
- name: _UseHelixOpenQueues
18+
value: 'false'
19+
20+
jobs:
21+
- template: jobs/default-build.yml
22+
parameters:
23+
jobName: Helix_matrix_x64
24+
jobDisplayName: 'Tests: Helix full matrix x64'
25+
agentOs: Windows
26+
timeoutInMinutes: 240
27+
steps:
28+
# Build the shared framework
29+
- script: ./build.cmd -ci -nobl -all -pack -arch x64 /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log
30+
displayName: Build shared fx
31+
- script: .\restore.cmd -ci /p:BuildInteropProjects=true
32+
displayName: Restore interop projects
33+
- script: .\build.cmd -ci -nobl -NoRestore -test -noBuildJava -all -projects eng\helix\helix.proj /p:IsHelixDaily=true /p:IsRequiredCheck=true /p:IsHelixJob=true /p:BuildInteropProjects=true /p:RunTemplateTests=true /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log
34+
displayName: Run build.cmd helix target
35+
env:
36+
HelixApiAccessToken: $(HelixApiAccessToken) # Needed for internal queues
37+
SYSTEM_ACCESSTOKEN: $(System.AccessToken) # We need to set this env var to publish helix results to Azure Dev Ops
38+
artifacts:
39+
- name: Helix_logs
40+
path: artifacts/log/
41+
publishOnError: true
42+
43+
# Helix ARM64
44+
- template: jobs/default-build.yml
45+
parameters:
46+
jobName: Helix_matrix_arm64
47+
jobDisplayName: "Tests: Helix ARM64 matrix"
48+
agentOs: Linux
49+
timeoutInMinutes: 180
50+
steps:
51+
- script: ./restore.sh -ci -nobl
52+
displayName: Restore
53+
- script: ./build.sh -ci --nobl --arch arm64 -test --no-build-nodejs --all -projects $(Build.SourcesDirectory)/eng/helix/helix.proj /p:IsHelixJob=true /p:IsHelixDaily=true /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log
54+
displayName: Run build.sh helix arm64 target
55+
env:
56+
HelixApiAccessToken: $(HelixApiAccessToken) # Needed for internal queues
57+
SYSTEM_ACCESSTOKEN: $(System.AccessToken) # We need to set this env var to publish helix results to Azure Dev Ops
58+
installNodeJs: false
59+
artifacts:
60+
- name: Helix_arm64_logs
61+
path: artifacts/log/
62+
publishOnError: true
63+
includeForks: true

eng/helix/content/RunTests/TestRunner.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,11 @@ public void UploadResults()
309309
}
310310

311311
var HELIX_WORKITEM_UPLOAD_ROOT = Environment.GetEnvironmentVariable("HELIX_WORKITEM_UPLOAD_ROOT");
312+
if (string.IsNullOrEmpty(HELIX_WORKITEM_UPLOAD_ROOT))
313+
{
314+
Console.WriteLine("No HELIX_WORKITEM_UPLOAD_ROOT specified, skipping log copy");
315+
return;
316+
}
312317
Console.WriteLine($"Copying artifacts/log/ to {HELIX_WORKITEM_UPLOAD_ROOT}/");
313318
if (Directory.Exists("artifacts/log"))
314319
{

eng/helix/content/runtests.cmd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ echo "Installing Runtime"
3030
powershell.exe -NoProfile -ExecutionPolicy unrestricted -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -useb 'https://dot.net/v1/dotnet-install.ps1'))) -Architecture %$arch% -Runtime dotnet -Version %$runtimeVersion% -InstallDir %DOTNET_ROOT%"
3131

3232
set exit_code=0
33-
echo "Restore: dotnet restore RunTests\RunTests.csproj --source https://api.nuget.org/v3/index.json --ignore-failed-sources..."
34-
dotnet restore RunTests\RunTests.csproj --source https://api.nuget.org/v3/index.json --ignore-failed-sources
33+
echo "Restore: dotnet restore RunTests\RunTests.csproj --source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json --ignore-failed-sources..."
34+
dotnet restore RunTests\RunTests.csproj --source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json --ignore-failed-sources
3535

3636
echo "Running tests: dotnet run --project RunTests\RunTests.csproj -- --target %$target% --sdk %$sdkVersion% --runtime %$runtimeVersion% --queue %$queue% --arch %$arch% --quarantined %$quarantined% --ef %$ef% --aspnetruntime %$aspnetruntime% --aspnetref %$aspnetref% --helixTimeout %$helixTimeout%..."
3737
dotnet run --project RunTests\RunTests.csproj -- --target %$target% --sdk %$sdkVersion% --runtime %$runtimeVersion% --queue %$queue% --arch %$arch% --quarantined %$quarantined% --ef %$ef% --aspnetruntime %$aspnetruntime% --aspnetref %$aspnetref% --helixTimeout %$helixTimeout%

eng/targets/Helix.Common.props

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@
1818
<HelixPreCommand Include="call RunPowershell.cmd UpdateIISExpressCertificate.ps1 || exit /b 1" />
1919
</ItemGroup>
2020

21-
<!-- ubuntu and win10 required for green PR queues -->
21+
<!-- PR(ci.yaml) required queues -->
2222
<ItemGroup Condition="'$(IsRequiredCheck)' == 'true' AND '$(TargetArchitecture)' == 'x64'">
2323
<HelixAvailableTargetQueue Include="Ubuntu.1604.Amd64.Open" Platform="Linux" />
2424
<HelixAvailableTargetQueue Include="Windows.10.Amd64.Open" Platform="Windows" />
2525
<HelixAvailableTargetQueue Include="OSX.1014.Amd64.Open" Platform="Linux" />
2626
</ItemGroup>
2727

28-
<!-- daily scheduled only queues -->
28+
<!-- queues for helix-matrix.yml pipeline -->
2929
<ItemGroup Condition="'$(IsWindowsOnlyTest)' != 'true' AND '$(TargetArchitecture)' == 'x64' AND '$(IsHelixDaily)' == 'true'">
3030
<HelixAvailableTargetQueue Include="Windows.7.Amd64.Open" Platform="Windows" />
3131
<HelixAvailableTargetQueue Include="Windows.81.Amd64.Open" Platform="Windows" />
@@ -37,13 +37,9 @@
3737
<HelixAvailableTargetQueue Include="(Fedora.28.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:fedora-28-helix-09ca40b-20190508143249" Platform="Linux" />
3838
</ItemGroup>
3939

40+
<!-- arm64 queues for helix-matrix.yml pipeline -->
4041
<ItemGroup Condition="'$(IsWindowsOnlyTest)' != 'true' AND '$(TargetArchitecture)' == 'arm64' AND '$(IsHelixDaily)' == 'true' AND '$(RunQuarantinedTests)' != 'true'">
41-
<!-- arm64 queues -->
42+
<HelixAvailableTargetQueue Include="Windows.10.Arm64.Open" Platform="Windows" />
4243
<HelixAvailableTargetQueue Include="(Debian.9.Arm64.Open)[email protected]/dotnet-buildtools/prereqs:debian-9-helix-arm64v8-a12566d-20190807161036" Platform="Linux" />
43-
44-
<!-- Need to resolve permission issues on this docker queue
45-
<HelixAvailableTargetQueue Include="(Alpine.38.Arm64)[email protected]/dotnet-buildtools/prereqs:alpine-3.8-helix-arm64v8-46e69dd-20190327215724" Platform="Linux" />
46-
<HelixAvailableTargetQueue Include="(Ubuntu-1804.Arm64.Open)[email protected]/dotnet-buildtools/prereqs:ubuntu-18.04-helix-arm64v8-6f28fa9-20190606004102" Platform="Linux" />
47-
-->
4844
</ItemGroup>
4945
</Project>

eng/targets/Helix.targets

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<HelixPreCommand Condition="'$(IsWindowsHelixQueue)' != 'true' AND '$(IsMacHelixQueue)' != 'true'" Include="./installjdk.sh 10.0.2 x64 &amp;&amp; if [ &quot;%24JAVA_HOME&quot; = &quot;&quot; ]%3B then export JAVA_HOME=%24PWD/java%3B fi" />
55
</ItemGroup>
66

7-
<ItemGroup Condition="'$(TestDependsOnMssql)' == 'true' AND '$(IsWindowsHelixQueue)' == 'true'">
7+
<ItemGroup Condition="'$(TestDependsOnMssql)' == 'true' AND '$(IsWindowsHelixQueue)' == 'true' AND '$(TargetArchitecture)' != 'arm64'">
88
<HelixPreCommand Include="call RunPowershell.cmd mssql\InstallSqlServerLocalDB.ps1 || exit /b 1" />
99
</ItemGroup>
1010

@@ -80,6 +80,7 @@ Usage: dotnet msbuild /t:Helix src/MyTestProject.csproj
8080
<PropertyGroup>
8181
<BuildHelixPayload Condition="'@(_HelixApplicableTargetQueue->Count())' == '0'">false</BuildHelixPayload>
8282
<BuildHelixPayload Condition="'$(TargetArchitecture)' == 'arm64' AND '$(SkipHelixArm)' == 'true'">false</BuildHelixPayload>
83+
<BuildHelixPayload Condition="$(SkipHelixQueues.Contains('$(HelixTargetQueue)'))">false</BuildHelixPayload>
8384
</PropertyGroup>
8485
</Target>
8586

src/Middleware/Diagnostics.EntityFrameworkCore/test/FunctionalTests/Diagnostics.EFCore.FunctionalTests.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
<!-- Avoid CS1705 errors due to mix of assemblies brought in transitively. -->
1616
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions" />
1717
<Reference Include="Microsoft.Extensions.Logging.Abstractions" />
18+
19+
<Compile Include="$(SharedSourceRoot)test\SkipOnHelixAttribute.cs" />
1820
</ItemGroup>
1921

2022
</Project>

src/Middleware/NodeServices/test/Microsoft.AspNetCore.NodeServices.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
<ItemGroup>
99
<Reference Include="Microsoft.AspNetCore.NodeServices" />
1010
<Reference Include="Microsoft.AspNetCore.TestHost" />
11+
<Compile Include="$(SharedSourceRoot)test\SkipOnHelixAttribute.cs" />
1112
<Content Include="js\**\*" />
1213
</ItemGroup>
1314

src/Middleware/NodeServices/test/NodeServicesTest.cs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@
44
using System;
55
using System.IO;
66
using System.Threading.Tasks;
7+
using Microsoft.AspNetCore.Testing;
78
using Microsoft.AspNetCore.NodeServices.HostingModels;
89
using Microsoft.Extensions.DependencyInjection;
910
using Xunit;
1011

1112
namespace Microsoft.AspNetCore.NodeServices
1213
{
14+
[SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/22084", Queues = "Windows.10.Arm64;Windows.10.Arm64.Open")]
1315
[Obsolete("Use Microsoft.AspNetCore.SpaServices.Extensions")]
1416
public class NodeServicesTest : IDisposable
1517
{
@@ -26,7 +28,7 @@ public NodeServicesTest()
2628
_nodeServices = NodeServicesFactory.CreateNodeServices(options);
2729
}
2830

29-
[Fact]
31+
[ConditionalFact]
3032
public async Task CanGetSuccessResult()
3133
{
3234
// Act
@@ -38,7 +40,7 @@ public async Task CanGetSuccessResult()
3840
Assert.Equal("test result", result);
3941
}
4042

41-
[Fact]
43+
[ConditionalFact]
4244
public async Task CanGetErrorResult()
4345
{
4446
// Act/Assert
@@ -49,7 +51,7 @@ public async Task CanGetErrorResult()
4951
Assert.StartsWith("This is an error from Node", ex.Message);
5052
}
5153

52-
[Fact]
54+
[ConditionalFact]
5355
public async Task CanGetResultAsynchronously()
5456
{
5557
// Act
@@ -63,7 +65,7 @@ public async Task CanGetResultAsynchronously()
6365
Assert.Equal("delayed test result", result);
6466
}
6567

66-
[Fact]
68+
[ConditionalFact]
6769
public async Task CanPassParameters()
6870
{
6971
// Act
@@ -77,7 +79,7 @@ public async Task CanPassParameters()
7779
Assert.Equal("Param0: Hey; Param1: 123", result);
7880
}
7981

80-
[Fact]
82+
[ConditionalFact]
8183
public async Task CanPassParametersWithCamelCaseNameConversion()
8284
{
8385
// Act
@@ -90,7 +92,7 @@ public async Task CanPassParametersWithCamelCaseNameConversion()
9092
Assert.Equal("Received: [{\"stringProp\":\"Abc\",\"intProp\":123,\"boolProp\":true}]", result);
9193
}
9294

93-
[Fact]
95+
[ConditionalFact]
9496
public async Task CanReceiveComplexResultWithPascalCaseNameConversion()
9597
{
9698
// Act
@@ -104,7 +106,7 @@ public async Task CanReceiveComplexResultWithPascalCaseNameConversion()
104106
Assert.True(result.BoolProp);
105107
}
106108

107-
[Fact]
109+
[ConditionalFact]
108110
public async Task CanInvokeDefaultModuleExport()
109111
{
110112
// Act

src/Servers/Kestrel/Transport.Libuv/test/Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.Tests.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
<TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
55
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
66
<ServerGarbageCollection>true</ServerGarbageCollection>
7+
<!-- https://github.com/dotnet/aspnetcore/issues/22114 -->
8+
<SkipHelixQueues>Windows.10.Arm64;Windows.10.Arm64.Open</SkipHelixQueues>
79
</PropertyGroup>
810

911
<ItemGroup>

0 commit comments

Comments
 (0)