Просмотр исходного кода

Use dotnet-helixapi-access token for internal helix builds

Hao Kung 6 лет назад
Родитель
Сommit
853d8f02e7

+ 8 - 0
.azure/pipelines/ci.yml

@@ -38,7 +38,12 @@ variables:
     value: ''
   - name: _SignType
     value: ''
+  - name: _UseHelixOpenQueues
+    value: 'true'
 - ${{ if eq(variables['System.TeamProject'], 'internal') }}:
+  - group: DotNet-HelixApi-Access
+  - name: _UseHelixOpenQueues
+    value: 'false'
   - ${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
     # DotNet-Blob-Feed provides: dotnetfeed-storage-access-key-1
     # Publish-Build-Assets provides: MaestroAccessToken, BotAccount-dotnet-maestro-bot-PAT
@@ -582,6 +587,7 @@ stages:
       - script: .\build.cmd -ci -NoRestore -test -projects eng\helix\helix.proj /p:IsRequiredCheck=true /p:IsHelixJob=true /p:BuildAllProjects=true /p:BuildNative=true /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log -bl
         displayName: Run build.cmd helix target
         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
@@ -602,6 +608,7 @@ stages:
       - script: .\build.cmd -ci -NoRestore -test -projects eng\helix\helix.proj /p:IsHelixJob=true /p:IsHelixDaily=true /p:BuildAllProjects=true /p:BuildNative=true /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log -bl
         displayName: Run build.cmd helix target
         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
@@ -623,6 +630,7 @@ stages:
       - script: ./build.sh -ci --arch arm64 -test --no-build-nodejs -projects $(Build.SourcesDirectory)/eng/helix/helix.proj /p:IsHelixJob=true /p:IsHelixDaily=true /p:BuildAllProjects=true /p:BuildNative=true /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log -bl
         displayName: Run build.sh helix arm64 target
         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
       installNodeJs: false
       artifacts:

+ 8 - 4
eng/helix/helix.proj

@@ -12,7 +12,8 @@
   <Import Project="..\Build.props" />
 
   <ItemGroup>
-    <HelixTargetQueue Include="@(HelixAvailableTargetQueue)" />
+    <HelixTargetQueue Condition="'$(_UseHelixOpenQueues)' == 'true'" Include="@(HelixAvailableTargetQueue)" />
+    <HelixTargetQueue Condition="'$(_UseHelixOpenQueues)' != 'true'" Include="@(HelixAvailableTargetQueue->'%(Identity)'->Replace('.Open',''))" />
   </ItemGroup>
 
   <PropertyGroup>
@@ -21,11 +22,13 @@
     <IsExternal>true</IsExternal>
     <SkipInvalidConfigurations>true</SkipInvalidConfigurations>
     <MaxRetryCount Condition="'$(MaxRetryCount)' == ''">2</MaxRetryCount>
+    <HelixAccessToken Condition="'$(_UseHelixOpenQueues)' != 'true'">$(HelixApiAccessToken)</HelixAccessToken>
   </PropertyGroup>
 
   <PropertyGroup Condition=" '$(ContinuousIntegrationBuild)' == 'true' ">
     <HelixType>ci</HelixType>
-    <Creator>aspnetcore</Creator>
+    <!-- Creator is not valid for internal queues -->
+    <Creator Condition="'$(_UseHelixOpenQueues)' == 'true'">aspnetcore</Creator>
     <HelixBuild>$(BUILD_BUILDNUMBER).$(TargetArchitecture).$(SYSTEM_JOBATTEMPT)</HelixBuild>
     <WaitForWorkItemCompletion>true</WaitForWorkItemCompletion>
     <EnableAzurePipelinesReporter>true</EnableAzurePipelinesReporter>
@@ -34,8 +37,9 @@
 
   <PropertyGroup Condition=" '$(ContinuousIntegrationBuild)' != 'true' ">
     <HelixType>dev</HelixType>
-    <Creator>$(USERNAME)</Creator>
-    <Creator Condition="'$(USERNAME)' == ''">$(USER)</Creator>
+    <!-- Creator is not valid for internal queues -->
+    <Creator Condition="'$(_UseHelixOpenQueues)' == 'true'">$(USERNAME)</Creator>
+    <Creator Condition="'$(USERNAME)' == '' AND '$(_UseHelixOpenQueues)' == 'true'">$(USER)</Creator>
     <HelixBuild>$([System.DateTime]::Now.ToString('yyyyMMddHHmm'))</HelixBuild>
   </PropertyGroup>
 

+ 6 - 0
eng/targets/Helix.targets

@@ -40,6 +40,12 @@ Usage: dotnet msbuild /t:Helix src/MyTestProject.csproj
       <_SelectedPlatforms>@(HelixProjectPlatform)</_SelectedPlatforms>
     </PropertyGroup>
 
+    <ItemGroup Condition="'$(_UseHelixOpenQueues)' != 'true'">
+      <_Temp Include="@(HelixAvailableTargetQueue)" />
+      <HelixAvailableTargetQueue Remove="@(HelixAvailableTargetQueue)" />
+      <HelixAvailableTargetQueue Include="@(_Temp->'%(Identity)'->Replace('.Open',''))" />
+    </ItemGroup>    
+    
     <ItemGroup>
       <!-- Include default queues based on platform -->
       <_HelixProjectTargetQueue Include="%(HelixAvailableTargetQueue.Identity)" Condition="'%(HelixAvailableTargetQueue.Identity)' != '' AND '$(_SelectedPlatforms.Contains(%(Platform)))' == 'true'" />

+ 2 - 2
src/Servers/Kestrel/test/FunctionalTests/Http2/HandshakeTests.cs

@@ -80,7 +80,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests.Http2
 
         [ConditionalFact]
         [OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "Missing SslStream ALPN support: https://github.com/dotnet/corefx/issues/30492")]
-        [SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/10428", Queues = "Debian.8.Amd64.Open")] // Debian 8 uses OpenSSL 1.0.1 which does not support HTTP/2
+        [SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/10428", Queues = "Debian.8.Amd64;Debian.8.Amd64.Open")] // Debian 8 uses OpenSSL 1.0.1 which does not support HTTP/2
         [MinimumOSVersion(OperatingSystems.Windows, WindowsVersions.Win81)]
         public async Task TlsAlpnHandshakeSelectsHttp2From1and2()
         {
@@ -111,7 +111,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests.Http2
 
         [ConditionalFact]
         [OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "Missing SslStream ALPN support: https://github.com/dotnet/corefx/issues/30492")]
-        [SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/10428", Queues = "Debian.8.Amd64.Open")] // Debian 8 uses OpenSSL 1.0.1 which does not support HTTP/2
+        [SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/10428", Queues = "Debian.8.Amd64;Debian.8.Amd64.Open")] // Debian 8 uses OpenSSL 1.0.1 which does not support HTTP/2
         [MinimumOSVersion(OperatingSystems.Windows, WindowsVersions.Win81)]
         public async Task TlsAlpnHandshakeSelectsHttp2()
         {

+ 2 - 2
src/Servers/Kestrel/test/FunctionalTests/Http2/ShutdownTests.cs

@@ -23,7 +23,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests.Http2
 {
     [OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "Missing SslStream ALPN support: https://github.com/dotnet/corefx/issues/30492")]
     [MinimumOSVersion(OperatingSystems.Windows, WindowsVersions.Win10)]
-    [SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/10428", Queues = "Debian.8.Amd64.Open")] // Debian 8 uses OpenSSL 1.0.1 which does not support HTTP/2
+    [SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/10428", Queues = "Debian.8.Amd64;Debian.8.Amd64.Open")] // Debian 8 uses OpenSSL 1.0.1 which does not support HTTP/2
     public class ShutdownTests : TestApplicationErrorLoggerLoggedTest
     {
         private static X509Certificate2 _x509Certificate2 = TestResources.GetTestCertificate();
@@ -44,7 +44,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests.Http2
 
         [CollectDump]
         [ConditionalFact]
-        [SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/9985", Queues = "Fedora.28.Amd64.Open")]
+        [SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/9985", Queues = "Fedora.28.Amd64;Fedora.28.Amd64.Open")]
         [Flaky("https://github.com/dotnet/aspnetcore/issues/9985", FlakyOn.All)]
         public async Task GracefulShutdownWaitsForRequestsToFinish()
         {

+ 1 - 1
src/Servers/Kestrel/test/InMemory.FunctionalTests/HttpsConnectionMiddlewareTests.cs

@@ -595,7 +595,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
         [InlineData(HttpProtocols.Http2)]
         [InlineData(HttpProtocols.Http1AndHttp2)]
         [OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "Missing SslStream ALPN support: https://github.com/dotnet/corefx/issues/30492")]
-        [SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/10428", Queues = "Debian.8.Amd64.Open")] // Debian 8 uses OpenSSL 1.0.1 which does not support HTTP/2
+        [SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/10428", Queues = "Debian.8.Amd64;Debian.8.Amd64.Open")] // Debian 8 uses OpenSSL 1.0.1 which does not support HTTP/2
         [MinimumOSVersion(OperatingSystems.Windows, WindowsVersions.Win81)]
         public async Task ListenOptionsProtolsCanBeSetAfterUseHttps(HttpProtocols httpProtocols)
         {

+ 1 - 1
src/Servers/Kestrel/test/Interop.FunctionalTests/Utilities.cs

@@ -14,7 +14,7 @@ namespace Interop.FunctionalTests
                 // "Missing SslStream ALPN support: https://github.com/dotnet/corefx/issues/30492"
                 && new OSSkipConditionAttribute(OperatingSystems.MacOSX).IsMet
                 // Debian 8 uses OpenSSL 1.0.1 which does not support ALPN
-                && new SkipOnHelixAttribute("https://github.com/dotnet/aspnetcore/issues/10428") { Queues = "Debian.8.Amd64.Open" }.IsMet;
+                && new SkipOnHelixAttribute("https://github.com/dotnet/aspnetcore/issues/10428") { Queues = "Debian.8.Amd64;Debian.8.Amd64.Open" }.IsMet;
         }
     }
 }