diff --git a/.azure/pipelines/ci.yml b/.azure/pipelines/ci.yml index 23668b1d6ac777f55d9c0d48f2c47a816cd782c1..cb0b5ed8a62a7edda0a884c3c98cb0407d34c1db 100644 --- a/.azure/pipelines/ci.yml +++ b/.azure/pipelines/ci.yml @@ -93,17 +93,17 @@ variables: - name: _InternalRuntimeDownloadCodeSignArgs value: '' - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - - group: DotNet-MSRC-Storage + - group: DotNetBuilds storage account read tokens - name: _InternalRuntimeDownloadArgs - value: -RuntimeSourceFeed https://dotnetclimsrc.blob.core.windows.net/dotnet - -RuntimeSourceFeedKey $(dotnetclimsrc-read-sas-token-base64) - /p:DotNetAssetRootAccessTokenSuffix='$(dotnetclimsrc-read-sas-token-base64)' + value: -RuntimeSourceFeed https://dotnetbuilds.blob.core.windows.net/internal + -RuntimeSourceFeedKey $(dotnetbuilds-internal-container-read-token-base64) + /p:DotNetAssetRootAccessTokenSuffix='$(dotnetbuilds-internal-container-read-token-base64)' # The code signing doesn't use the aspnet build scripts, so the msbuild parameters have to be passed directly. This # is awkward but necessary because the eng/common/ build scripts don't add the msbuild properties automatically. - name: _InternalRuntimeDownloadCodeSignArgs value: $(_InternalRuntimeDownloadArgs) - /p:DotNetRuntimeSourceFeed=https://dotnetclimsrc.blob.core.windows.net/dotnet - /p:DotNetRuntimeSourceFeedKey=$(dotnetclimsrc-read-sas-token-base64) + /p:DotNetRuntimeSourceFeed=https://dotnetbuilds.blob.core.windows.net/internal + /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) - group: DotNet-HelixApi-Access - name: _UseHelixOpenQueues value: 'false' @@ -528,7 +528,7 @@ stages: jobName: Linux_musl_x64_build jobDisplayName: "Build: Linux Musl x64" agentOs: Linux - container: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.9-WithNode-0fc54a3-20190918214015 + container: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.14-WithNode-20210910135833-c401c85 buildArgs: --arch x64 --os-name linux-musl @@ -736,7 +736,7 @@ stages: platform: name: 'Managed' container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-7-20210714125435-9b5bbc2' - buildScript: './eng/build.sh $(_PublishArgs) --no-build-repo-tasks' + buildScript: './eng/build.sh $(_PublishArgs) --no-build-repo-tasks $(_InternalRuntimeDownloadArgs)' skipPublishValidation: true # Publish to the BAR diff --git a/.azure/pipelines/jobs/default-build.yml b/.azure/pipelines/jobs/default-build.yml index 71156daac72026070954e35b6bfe9099e92ea227..46899dd8c3345a6d33f3cfd38fb2e967a04f5f41 100644 --- a/.azure/pipelines/jobs/default-build.yml +++ b/.azure/pipelines/jobs/default-build.yml @@ -220,6 +220,7 @@ jobs: # Include the variables we always want. COMPlus_DbgEnableMiniDump: 1 COMPlus_DbgMiniDumpName: "$(System.DefaultWorkingDirectory)/dotnet-%d.%t.core" + DotNetBuildsInternalReadSasToken: $(dotnetbuilds-internal-container-read-token) # Expand provided `env:` properties, if any. ${{ if step.env }}: ${{ step.env }} @@ -230,12 +231,14 @@ jobs: env: COMPlus_DbgEnableMiniDump: 1 COMPlus_DbgMiniDumpName: "$(System.DefaultWorkingDirectory)/dotnet-%d.%t.core" + DotNetBuildsInternalReadSasToken: $(dotnetbuilds-internal-container-read-token) - ${{ if ne(parameters.agentOs, 'Windows') }}: - script: $(BuildDirectory)/build.sh --ci --nobl --configuration $(BuildConfiguration) $(BuildScriptArgs) displayName: Run build.sh env: COMPlus_DbgEnableMiniDump: 1 COMPlus_DbgMiniDumpName: "$(System.DefaultWorkingDirectory)/dotnet-%d.%t.core" + DotNetBuildsInternalReadSasToken: $(dotnetbuilds-internal-container-read-token) - ${{ parameters.afterBuild }} diff --git a/NuGet.config b/NuGet.config index 4b821f800992e3c37517c61bef0dc570f13f4abf..050fda0b4dcd3d819c706436559cfbc7f60a9ccf 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,8 +4,10 @@ <clear /> <!--Begin: Package sources managed by Dependency Flow automation. Do not edit the sources below.--> <!-- Begin: Package sources from dotnet-runtime --> + <add key="darc-int-dotnet-runtime-839cdfb" value="https://pkgs.dev.azure.com/dnceng/internal/_packaging/darc-int-dotnet-runtime-839cdfb0/nuget/v3/index.json" /> <!-- End: Package sources from dotnet-runtime --> <!-- Begin: Package sources from dotnet-efcore --> + <add key="darc-int-dotnet-efcore-d93f389" value="https://pkgs.dev.azure.com/dnceng/internal/_packaging/darc-int-dotnet-efcore-d93f3895/nuget/v3/index.json" /> <!-- End: Package sources from dotnet-efcore --> <!--End: Package sources managed by Dependency Flow automation. Do not edit the sources above.--> <add key="dotnet-eng" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" /> @@ -25,8 +27,10 @@ <clear /> <!--Begin: Package sources managed by Dependency Flow automation. Do not edit the sources below.--> <!-- Begin: Package sources from dotnet-efcore --> + <add key="darc-int-dotnet-efcore-d93f389" value="true" /> <!-- End: Package sources from dotnet-efcore --> <!-- Begin: Package sources from dotnet-runtime --> + <add key="darc-int-dotnet-runtime-839cdfb" value="true" /> <!-- End: Package sources from dotnet-runtime --> <!--End: Package sources managed by Dependency Flow automation. Do not edit the sources above.--> </disabledPackageSources> diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 5ae1b2b2af565624ed63aab29b1972d4f2418481..963b575d9ae8d0eb97cbbe17198d58caa262300c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -9,45 +9,45 @@ --> <Dependencies> <ProductDependencies> - <Dependency Name="dotnet-ef" Version="6.0.1"> + <Dependency Name="dotnet-ef" Version="6.0.2"> <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-efcore</Uri> - <Sha>41e6aaaf6216de904530de11b0bfd4af43fb13f7</Sha> + <Sha>d93f389536054e13de2f820fe89197aa374c01eb</Sha> </Dependency> - <Dependency Name="Microsoft.EntityFrameworkCore.InMemory" Version="6.0.1"> + <Dependency Name="Microsoft.EntityFrameworkCore.InMemory" Version="6.0.2"> <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-efcore</Uri> - <Sha>41e6aaaf6216de904530de11b0bfd4af43fb13f7</Sha> + <Sha>d93f389536054e13de2f820fe89197aa374c01eb</Sha> </Dependency> - <Dependency Name="Microsoft.EntityFrameworkCore.Relational" Version="6.0.1"> + <Dependency Name="Microsoft.EntityFrameworkCore.Relational" Version="6.0.2"> <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-efcore</Uri> - <Sha>41e6aaaf6216de904530de11b0bfd4af43fb13f7</Sha> + <Sha>d93f389536054e13de2f820fe89197aa374c01eb</Sha> </Dependency> - <Dependency Name="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.1"> + <Dependency Name="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.2"> <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-efcore</Uri> - <Sha>41e6aaaf6216de904530de11b0bfd4af43fb13f7</Sha> + <Sha>d93f389536054e13de2f820fe89197aa374c01eb</Sha> </Dependency> - <Dependency Name="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.1"> + <Dependency Name="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.2"> <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-efcore</Uri> - <Sha>41e6aaaf6216de904530de11b0bfd4af43fb13f7</Sha> + <Sha>d93f389536054e13de2f820fe89197aa374c01eb</Sha> </Dependency> - <Dependency Name="Microsoft.EntityFrameworkCore.Tools" Version="6.0.1"> + <Dependency Name="Microsoft.EntityFrameworkCore.Tools" Version="6.0.2"> <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-efcore</Uri> - <Sha>41e6aaaf6216de904530de11b0bfd4af43fb13f7</Sha> + <Sha>d93f389536054e13de2f820fe89197aa374c01eb</Sha> </Dependency> - <Dependency Name="Microsoft.EntityFrameworkCore" Version="6.0.1"> + <Dependency Name="Microsoft.EntityFrameworkCore" Version="6.0.2"> <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-efcore</Uri> - <Sha>41e6aaaf6216de904530de11b0bfd4af43fb13f7</Sha> + <Sha>d93f389536054e13de2f820fe89197aa374c01eb</Sha> </Dependency> - <Dependency Name="Microsoft.EntityFrameworkCore.Design" Version="6.0.1"> + <Dependency Name="Microsoft.EntityFrameworkCore.Design" Version="6.0.2"> <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-efcore</Uri> - <Sha>41e6aaaf6216de904530de11b0bfd4af43fb13f7</Sha> + <Sha>d93f389536054e13de2f820fe89197aa374c01eb</Sha> </Dependency> <Dependency Name="Microsoft.Extensions.Caching.Abstractions" Version="6.0.0"> <Uri>https://github.com/dotnet/runtime</Uri> <Sha>4822e3c3aa77eb82b2fb33c9321f923cf11ddde6</Sha> </Dependency> - <Dependency Name="Microsoft.Extensions.Caching.Memory" Version="6.0.0"> - <Uri>https://github.com/dotnet/runtime</Uri> - <Sha>4822e3c3aa77eb82b2fb33c9321f923cf11ddde6</Sha> + <Dependency Name="Microsoft.Extensions.Caching.Memory" Version="6.0.1"> + <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri> + <Sha>839cdfb0ecca5e0be3dbccd926e7651ef50fdf10</Sha> </Dependency> <Dependency Name="Microsoft.Extensions.Configuration.Abstractions" Version="6.0.0"> <Uri>https://github.com/dotnet/runtime</Uri> @@ -61,9 +61,9 @@ <Uri>https://github.com/dotnet/runtime</Uri> <Sha>4822e3c3aa77eb82b2fb33c9321f923cf11ddde6</Sha> </Dependency> - <Dependency Name="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="6.0.0"> - <Uri>https://github.com/dotnet/runtime</Uri> - <Sha>4822e3c3aa77eb82b2fb33c9321f923cf11ddde6</Sha> + <Dependency Name="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="6.0.1"> + <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri> + <Sha>839cdfb0ecca5e0be3dbccd926e7651ef50fdf10</Sha> </Dependency> <Dependency Name="Microsoft.Extensions.Configuration.FileExtensions" Version="6.0.0"> <Uri>https://github.com/dotnet/runtime</Uri> @@ -77,9 +77,9 @@ <Uri>https://github.com/dotnet/runtime</Uri> <Sha>4822e3c3aa77eb82b2fb33c9321f923cf11ddde6</Sha> </Dependency> - <Dependency Name="Microsoft.Extensions.Configuration.UserSecrets" Version="6.0.0"> - <Uri>https://github.com/dotnet/runtime</Uri> - <Sha>4822e3c3aa77eb82b2fb33c9321f923cf11ddde6</Sha> + <Dependency Name="Microsoft.Extensions.Configuration.UserSecrets" Version="6.0.1"> + <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri> + <Sha>839cdfb0ecca5e0be3dbccd926e7651ef50fdf10</Sha> </Dependency> <Dependency Name="Microsoft.Extensions.Configuration.Xml" Version="6.0.0"> <Uri>https://github.com/dotnet/runtime</Uri> @@ -121,9 +121,9 @@ <Uri>https://github.com/dotnet/runtime</Uri> <Sha>4822e3c3aa77eb82b2fb33c9321f923cf11ddde6</Sha> </Dependency> - <Dependency Name="Microsoft.Extensions.Hosting" Version="6.0.0"> - <Uri>https://github.com/dotnet/runtime</Uri> - <Sha>4822e3c3aa77eb82b2fb33c9321f923cf11ddde6</Sha> + <Dependency Name="Microsoft.Extensions.Hosting" Version="6.0.1"> + <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri> + <Sha>839cdfb0ecca5e0be3dbccd926e7651ef50fdf10</Sha> </Dependency> <Dependency Name="Microsoft.Extensions.Http" Version="6.0.0"> <Uri>https://github.com/dotnet/runtime</Uri> @@ -177,9 +177,9 @@ <Uri>https://github.com/dotnet/runtime</Uri> <Sha>4822e3c3aa77eb82b2fb33c9321f923cf11ddde6</Sha> </Dependency> - <Dependency Name="Microsoft.Internal.Runtime.AspNetCore.Transport" Version="6.0.1-servicing.21567.5"> + <Dependency Name="Microsoft.Internal.Runtime.AspNetCore.Transport" Version="6.0.2-servicing.22064.6"> <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri> - <Sha>3a25a7f1cc446b60678ed25c9d829420d6321eba</Sha> + <Sha>839cdfb0ecca5e0be3dbccd926e7651ef50fdf10</Sha> </Dependency> <Dependency Name="System.Diagnostics.DiagnosticSource" Version="6.0.0"> <Uri>https://github.com/dotnet/runtime</Uri> @@ -189,13 +189,13 @@ <Uri>https://github.com/dotnet/runtime</Uri> <Sha>4822e3c3aa77eb82b2fb33c9321f923cf11ddde6</Sha> </Dependency> - <Dependency Name="System.DirectoryServices.Protocols" Version="6.0.0"> - <Uri>https://github.com/dotnet/runtime</Uri> - <Sha>4822e3c3aa77eb82b2fb33c9321f923cf11ddde6</Sha> + <Dependency Name="System.DirectoryServices.Protocols" Version="6.0.1"> + <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri> + <Sha>839cdfb0ecca5e0be3dbccd926e7651ef50fdf10</Sha> </Dependency> - <Dependency Name="System.IO.Pipelines" Version="6.0.1"> + <Dependency Name="System.IO.Pipelines" Version="6.0.2"> <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri> - <Sha>3a25a7f1cc446b60678ed25c9d829420d6321eba</Sha> + <Sha>839cdfb0ecca5e0be3dbccd926e7651ef50fdf10</Sha> </Dependency> <Dependency Name="System.Net.Http.Json" Version="6.0.0"> <Uri>https://github.com/dotnet/runtime</Uri> @@ -233,9 +233,9 @@ <Uri>https://github.com/dotnet/runtime</Uri> <Sha>4822e3c3aa77eb82b2fb33c9321f923cf11ddde6</Sha> </Dependency> - <Dependency Name="System.Text.Json" Version="6.0.1"> + <Dependency Name="System.Text.Json" Version="6.0.2"> <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri> - <Sha>3a25a7f1cc446b60678ed25c9d829420d6321eba</Sha> + <Sha>839cdfb0ecca5e0be3dbccd926e7651ef50fdf10</Sha> </Dependency> <Dependency Name="System.Threading.Channels" Version="6.0.0"> <Uri>https://github.com/dotnet/runtime</Uri> @@ -245,33 +245,33 @@ <Uri>https://github.com/dotnet/runtime</Uri> <Sha>4822e3c3aa77eb82b2fb33c9321f923cf11ddde6</Sha> </Dependency> - <Dependency Name="Microsoft.NETCore.App.Ref" Version="6.0.1"> + <Dependency Name="Microsoft.NETCore.App.Ref" Version="6.0.2"> <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri> - <Sha>3a25a7f1cc446b60678ed25c9d829420d6321eba</Sha> + <Sha>839cdfb0ecca5e0be3dbccd926e7651ef50fdf10</Sha> </Dependency> - <Dependency Name="Microsoft.NET.Runtime.MonoAOTCompiler.Task" Version="6.0.1"> + <Dependency Name="Microsoft.NET.Runtime.MonoAOTCompiler.Task" Version="6.0.2"> <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri> - <Sha>3a25a7f1cc446b60678ed25c9d829420d6321eba</Sha> + <Sha>839cdfb0ecca5e0be3dbccd926e7651ef50fdf10</Sha> </Dependency> - <Dependency Name="Microsoft.NET.Runtime.WebAssembly.Sdk" Version="6.0.1"> + <Dependency Name="Microsoft.NET.Runtime.WebAssembly.Sdk" Version="6.0.2"> <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri> - <Sha>3a25a7f1cc446b60678ed25c9d829420d6321eba</Sha> + <Sha>839cdfb0ecca5e0be3dbccd926e7651ef50fdf10</Sha> </Dependency> <!-- Win-x64 is used here because we have picked an arbitrary runtime identifier to flow the version of the latest NETCore.App runtime. All Runtime.$rid packages should have the same version. --> - <Dependency Name="Microsoft.NETCore.App.Runtime.win-x64" Version="6.0.1"> + <Dependency Name="Microsoft.NETCore.App.Runtime.win-x64" Version="6.0.2"> <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri> - <Sha>3a25a7f1cc446b60678ed25c9d829420d6321eba</Sha> + <Sha>839cdfb0ecca5e0be3dbccd926e7651ef50fdf10</Sha> </Dependency> - <Dependency Name="Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm" Version="6.0.1"> + <Dependency Name="Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm" Version="6.0.2"> <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri> - <Sha>3a25a7f1cc446b60678ed25c9d829420d6321eba</Sha> + <Sha>839cdfb0ecca5e0be3dbccd926e7651ef50fdf10</Sha> </Dependency> - <Dependency Name="Microsoft.NETCore.BrowserDebugHost.Transport" Version="6.0.1-servicing.21567.5"> + <Dependency Name="Microsoft.NETCore.BrowserDebugHost.Transport" Version="6.0.2-servicing.22064.6"> <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri> - <Sha>3a25a7f1cc446b60678ed25c9d829420d6321eba</Sha> + <Sha>839cdfb0ecca5e0be3dbccd926e7651ef50fdf10</Sha> </Dependency> </ProductDependencies> <ToolsetDependencies> diff --git a/eng/Versions.props b/eng/Versions.props index 478ad4fd8fbe7955e1eb80d55d304a96df3390f1..faa0941d66801b2727fa2e3e2a6e9a388f481e02 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -63,23 +63,23 @@ <PropertyGroup Label="Automated"> <!-- Packages from dotnet/runtime --> <MicrosoftExtensionsDependencyModelVersion>6.0.0</MicrosoftExtensionsDependencyModelVersion> - <MicrosoftNETCoreAppRefVersion>6.0.1</MicrosoftNETCoreAppRefVersion> - <MicrosoftNETCoreAppRuntimewinx64Version>6.0.1</MicrosoftNETCoreAppRuntimewinx64Version> - <MicrosoftNETRuntimeMonoAOTCompilerTaskVersion>6.0.1</MicrosoftNETRuntimeMonoAOTCompilerTaskVersion> - <MicrosoftNETRuntimeWebAssemblySdkVersion>6.0.1</MicrosoftNETRuntimeWebAssemblySdkVersion> - <MicrosoftNETCoreAppRuntimeAOTwinx64CrossbrowserwasmVersion>6.0.1</MicrosoftNETCoreAppRuntimeAOTwinx64CrossbrowserwasmVersion> - <MicrosoftNETCoreBrowserDebugHostTransportVersion>6.0.1-servicing.21567.5</MicrosoftNETCoreBrowserDebugHostTransportVersion> + <MicrosoftNETCoreAppRefVersion>6.0.2</MicrosoftNETCoreAppRefVersion> + <MicrosoftNETCoreAppRuntimewinx64Version>6.0.2</MicrosoftNETCoreAppRuntimewinx64Version> + <MicrosoftNETRuntimeMonoAOTCompilerTaskVersion>6.0.2</MicrosoftNETRuntimeMonoAOTCompilerTaskVersion> + <MicrosoftNETRuntimeWebAssemblySdkVersion>6.0.2</MicrosoftNETRuntimeWebAssemblySdkVersion> + <MicrosoftNETCoreAppRuntimeAOTwinx64CrossbrowserwasmVersion>6.0.2</MicrosoftNETCoreAppRuntimeAOTwinx64CrossbrowserwasmVersion> + <MicrosoftNETCoreBrowserDebugHostTransportVersion>6.0.2-servicing.22064.6</MicrosoftNETCoreBrowserDebugHostTransportVersion> <MicrosoftExtensionsCachingAbstractionsVersion>6.0.0</MicrosoftExtensionsCachingAbstractionsVersion> - <MicrosoftExtensionsCachingMemoryVersion>6.0.0</MicrosoftExtensionsCachingMemoryVersion> + <MicrosoftExtensionsCachingMemoryVersion>6.0.1</MicrosoftExtensionsCachingMemoryVersion> <MicrosoftExtensionsConfigurationAbstractionsVersion>6.0.0</MicrosoftExtensionsConfigurationAbstractionsVersion> <MicrosoftExtensionsConfigurationBinderVersion>6.0.0</MicrosoftExtensionsConfigurationBinderVersion> <MicrosoftExtensionsConfigurationCommandLineVersion>6.0.0</MicrosoftExtensionsConfigurationCommandLineVersion> - <MicrosoftExtensionsConfigurationEnvironmentVariablesVersion>6.0.0</MicrosoftExtensionsConfigurationEnvironmentVariablesVersion> + <MicrosoftExtensionsConfigurationEnvironmentVariablesVersion>6.0.1</MicrosoftExtensionsConfigurationEnvironmentVariablesVersion> <MicrosoftExtensionsConfigurationFileExtensionsVersion>6.0.0</MicrosoftExtensionsConfigurationFileExtensionsVersion> <MicrosoftExtensionsConfigurationIniVersion>6.0.0</MicrosoftExtensionsConfigurationIniVersion> <MicrosoftExtensionsConfigurationJsonVersion>6.0.0</MicrosoftExtensionsConfigurationJsonVersion> <MicrosoftExtensionsConfigurationVersion>6.0.0</MicrosoftExtensionsConfigurationVersion> - <MicrosoftExtensionsConfigurationUserSecretsVersion>6.0.0</MicrosoftExtensionsConfigurationUserSecretsVersion> + <MicrosoftExtensionsConfigurationUserSecretsVersion>6.0.1</MicrosoftExtensionsConfigurationUserSecretsVersion> <MicrosoftExtensionsConfigurationXmlVersion>6.0.0</MicrosoftExtensionsConfigurationXmlVersion> <MicrosoftExtensionsDependencyInjectionAbstractionsVersion>6.0.0</MicrosoftExtensionsDependencyInjectionAbstractionsVersion> <MicrosoftExtensionsDependencyInjectionVersion>6.0.0</MicrosoftExtensionsDependencyInjectionVersion> @@ -89,7 +89,7 @@ <MicrosoftExtensionsFileSystemGlobbingVersion>6.0.0</MicrosoftExtensionsFileSystemGlobbingVersion> <MicrosoftExtensionsHostFactoryResolverSourcesVersion>6.0.1-servicing.21567.5</MicrosoftExtensionsHostFactoryResolverSourcesVersion> <MicrosoftExtensionsHostingAbstractionsVersion>6.0.0</MicrosoftExtensionsHostingAbstractionsVersion> - <MicrosoftExtensionsHostingVersion>6.0.0</MicrosoftExtensionsHostingVersion> + <MicrosoftExtensionsHostingVersion>6.0.1</MicrosoftExtensionsHostingVersion> <MicrosoftExtensionsHttpVersion>6.0.0</MicrosoftExtensionsHttpVersion> <MicrosoftExtensionsLoggingAbstractionsVersion>6.0.0</MicrosoftExtensionsLoggingAbstractionsVersion> <MicrosoftExtensionsLoggingConfigurationVersion>6.0.0</MicrosoftExtensionsLoggingConfigurationVersion> @@ -103,11 +103,11 @@ <MicrosoftExtensionsOptionsDataAnnotationsVersion>6.0.0</MicrosoftExtensionsOptionsDataAnnotationsVersion> <MicrosoftExtensionsOptionsVersion>6.0.0</MicrosoftExtensionsOptionsVersion> <MicrosoftExtensionsPrimitivesVersion>6.0.0</MicrosoftExtensionsPrimitivesVersion> - <MicrosoftInternalRuntimeAspNetCoreTransportVersion>6.0.1-servicing.21567.5</MicrosoftInternalRuntimeAspNetCoreTransportVersion> + <MicrosoftInternalRuntimeAspNetCoreTransportVersion>6.0.2-servicing.22064.6</MicrosoftInternalRuntimeAspNetCoreTransportVersion> <SystemDiagnosticsDiagnosticSourceVersion>6.0.0</SystemDiagnosticsDiagnosticSourceVersion> <SystemDiagnosticsEventLogVersion>6.0.0</SystemDiagnosticsEventLogVersion> - <SystemDirectoryServicesProtocolsVersion>6.0.0</SystemDirectoryServicesProtocolsVersion> - <SystemIOPipelinesVersion>6.0.1</SystemIOPipelinesVersion> + <SystemDirectoryServicesProtocolsVersion>6.0.1</SystemDirectoryServicesProtocolsVersion> + <SystemIOPipelinesVersion>6.0.2</SystemIOPipelinesVersion> <SystemNetHttpJsonVersion>6.0.0</SystemNetHttpJsonVersion> <SystemNetHttpWinHttpHandlerVersion>6.0.0</SystemNetHttpWinHttpHandlerVersion> <SystemReflectionMetadataVersion>6.0.0</SystemReflectionMetadataVersion> @@ -117,19 +117,19 @@ <SystemSecurityCryptographyXmlVersion>6.0.0</SystemSecurityCryptographyXmlVersion> <SystemServiceProcessServiceControllerVersion>6.0.0</SystemServiceProcessServiceControllerVersion> <SystemTextEncodingsWebVersion>6.0.0</SystemTextEncodingsWebVersion> - <SystemTextJsonVersion>6.0.1</SystemTextJsonVersion> + <SystemTextJsonVersion>6.0.2</SystemTextJsonVersion> <SystemThreadingChannelsVersion>6.0.0</SystemThreadingChannelsVersion> <!-- Only listed explicitly to workaround https://github.com/dotnet/cli/issues/10528 --> <MicrosoftNETCorePlatformsVersion>6.0.1</MicrosoftNETCorePlatformsVersion> <!-- Packages from dotnet/efcore --> - <dotnetefVersion>6.0.1</dotnetefVersion> - <MicrosoftEntityFrameworkCoreInMemoryVersion>6.0.1</MicrosoftEntityFrameworkCoreInMemoryVersion> - <MicrosoftEntityFrameworkCoreRelationalVersion>6.0.1</MicrosoftEntityFrameworkCoreRelationalVersion> - <MicrosoftEntityFrameworkCoreSqliteVersion>6.0.1</MicrosoftEntityFrameworkCoreSqliteVersion> - <MicrosoftEntityFrameworkCoreSqlServerVersion>6.0.1</MicrosoftEntityFrameworkCoreSqlServerVersion> - <MicrosoftEntityFrameworkCoreToolsVersion>6.0.1</MicrosoftEntityFrameworkCoreToolsVersion> - <MicrosoftEntityFrameworkCoreVersion>6.0.1</MicrosoftEntityFrameworkCoreVersion> - <MicrosoftEntityFrameworkCoreDesignVersion>6.0.1</MicrosoftEntityFrameworkCoreDesignVersion> + <dotnetefVersion>6.0.2</dotnetefVersion> + <MicrosoftEntityFrameworkCoreInMemoryVersion>6.0.2</MicrosoftEntityFrameworkCoreInMemoryVersion> + <MicrosoftEntityFrameworkCoreRelationalVersion>6.0.2</MicrosoftEntityFrameworkCoreRelationalVersion> + <MicrosoftEntityFrameworkCoreSqliteVersion>6.0.2</MicrosoftEntityFrameworkCoreSqliteVersion> + <MicrosoftEntityFrameworkCoreSqlServerVersion>6.0.2</MicrosoftEntityFrameworkCoreSqlServerVersion> + <MicrosoftEntityFrameworkCoreToolsVersion>6.0.2</MicrosoftEntityFrameworkCoreToolsVersion> + <MicrosoftEntityFrameworkCoreVersion>6.0.2</MicrosoftEntityFrameworkCoreVersion> + <MicrosoftEntityFrameworkCoreDesignVersion>6.0.2</MicrosoftEntityFrameworkCoreDesignVersion> <!-- Packages from dotnet/arcade --> <MicrosoftDotNetBuildTasksInstallersVersion>6.0.0-beta.22102.3</MicrosoftDotNetBuildTasksInstallersVersion> <MicrosoftDotNetBuildTasksTemplatingVersion>6.0.0-beta.22102.3</MicrosoftDotNetBuildTasksTemplatingVersion> @@ -270,6 +270,6 @@ <PropertyGroup Label="Restore feeds"> <!-- In an orchestrated build, this may be overridden to other Azure feeds. --> <DotNetAssetRootUrl Condition="'$(DotNetAssetRootUrl)'==''">https://dotnetcli.azureedge.net/dotnet/</DotNetAssetRootUrl> - <DotNetPrivateAssetRootUrl Condition="'$(DotNetPrivateAssetRootUrl)'==''">https://dotnetclimsrc.blob.core.windows.net/dotnet/</DotNetPrivateAssetRootUrl> + <DotNetPrivateAssetRootUrl Condition="'$(DotNetPrivateAssetRootUrl)'==''"> https://dotnetbuilds.azureedge.net/internal/</DotNetPrivateAssetRootUrl> </PropertyGroup> </Project> diff --git a/eng/helix/helix.proj b/eng/helix/helix.proj index 392c90bd1e077238a0edd7493857d99320e27ac4..56ecf5c1fbdd63ded00963383cfddc0e94b60d86 100644 --- a/eng/helix/helix.proj +++ b/eng/helix/helix.proj @@ -29,6 +29,9 @@ <DotNetCliVersion>$(NETCoreSdkVersion)</DotNetCliVersion> <DotNetCliChannel>Current</DotNetCliChannel> + <ArchiveExtension>.tar.gz</ArchiveExtension> + <ArchiveExtension Condition="'$(IsWindowsHelixQueue)' == 'true'">.zip</ArchiveExtension> + <!-- Similar to ProjectLayout.props in the Arcade SDK. The Helix SDK contains nothing similar. --> <OutputPath Condition=" '$(OutputPath)' == '' ">$(RepoRoot)artifacts\bin\$(MSBuildProjectName)\</OutputPath> </PropertyGroup> @@ -37,10 +40,11 @@ <ItemGroup> <!-- Use the BrowserDebugHost transport package as a sentinel for the non-shipping version of the NETCoreApp shared framework. + !temporary! e.g. https://dotnetbuilds.blob.core.windows.net/internal/Runtime/6.0.2-servicing.22060.12/dotnet-runtime-6.0.2-win-x86.zip?{token} --> - <AdditionalDotNetPackage Include="$(MicrosoftNETCoreBrowserDebugHostTransportVersion)"> - <PackageType>runtime</PackageType> - </AdditionalDotNetPackage> + <HelixCorrelationPayload Include="dotnet-cli" + Destination="dotnet-cli" + Uri="https://dotnetbuilds.blob.core.windows.net/internal/Runtime/$(MicrosoftNETCoreBrowserDebugHostTransportVersion)/dotnet-runtime-$(MicrosoftNETCoreAppRuntimeVersion)-$(DotNetCliRuntime)$(ArchiveExtension)$([System.Environment]::GetEnvironmentVariable('DotNetBuildsInternalReadSasToken'))" /> </ItemGroup> <PropertyGroup Condition=" '$(ContinuousIntegrationBuild)' == 'true' "> diff --git a/eng/targets/Helix.Common.props b/eng/targets/Helix.Common.props index c82fe494c85f5b06e75e6d78c5db31249f485e1a..f17314b89e81348f0cba283166931660eddc436e 100644 --- a/eng/targets/Helix.Common.props +++ b/eng/targets/Helix.Common.props @@ -62,4 +62,11 @@ <ItemGroup Condition="'$(TargetArchitecture)' == 'arm64' AND '$(IsHelixDaily)' == 'true' AND '$(_UseHelixOpenQueues)' == 'true' AND '$(IsWindowsOnlyTest)' != 'true'"> <HelixAvailableTargetQueue Include="Windows.10.Arm64v8.Open" Platform="Windows" /> </ItemGroup> + + <PropertyGroup> + <IsWindowsHelixQueue>false</IsWindowsHelixQueue> + <IsWindowsHelixQueue Condition="$(HelixTargetQueue.Contains('Windows')) or $(HelixTargetQueue.Contains('windows'))">true</IsWindowsHelixQueue> + <IsMacHelixQueue>false</IsMacHelixQueue> + <IsMacHelixQueue Condition="$(HelixTargetQueue.Contains('OSX')) or $(HelixTargetQueue.Contains('macOs'))">true</IsMacHelixQueue> + </PropertyGroup> </Project> diff --git a/eng/targets/Helix.props b/eng/targets/Helix.props index bc0dfe046eaeed2ec605a5ec7feeceeffd55d694..dc2bad9552b929358cfb73b3a63e95b276eed75c 100644 --- a/eng/targets/Helix.props +++ b/eng/targets/Helix.props @@ -14,10 +14,6 @@ <HelixTimeout>00:30:00</HelixTimeout> <HelixTimeout Condition="$(HelixTargetQueue.StartsWith('Windows.10.Amd64'))">00:40:00</HelixTimeout> <RunQuarantinedTests>false</RunQuarantinedTests> - <IsWindowsHelixQueue>false</IsWindowsHelixQueue> - <IsWindowsHelixQueue Condition="$(HelixTargetQueue.Contains('Windows')) or $(HelixTargetQueue.Contains('windows'))">true</IsWindowsHelixQueue> - <IsMacHelixQueue>false</IsMacHelixQueue> - <IsMacHelixQueue Condition="$(HelixTargetQueue.Contains('OSX')) or $(HelixTargetQueue.Contains('macOs'))">true</IsMacHelixQueue> <HelixTestName>$(MSBuildProjectName)--$(TargetFramework)</HelixTestName> <LoggingTestingDisableFileLogging Condition="'$(IsHelixJob)' == 'true'">false</LoggingTestingDisableFileLogging> <NodeVersion>14.17.6</NodeVersion> diff --git a/src/Servers/Kestrel/Core/src/Internal/Http2/Http2Connection.cs b/src/Servers/Kestrel/Core/src/Internal/Http2/Http2Connection.cs index a9e10b912dc19686cbe6913b96c3529199535a35..2f54decb91b64dbcf0d838c487f5fa90640a3909 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http2/Http2Connection.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http2/Http2Connection.cs @@ -977,6 +977,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2 if (endHeaders) { + _currentHeadersStream.OnHeadersComplete(); + StartStream(); ResetRequestHeaderParsingState(); } diff --git a/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Connection.cs b/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Connection.cs index 3452bd52d7a0e5e02fe820ee242b28ee85aa34b4..3d601eff2a2a7e98efec44d86b094f28c5ac6871 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Connection.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Connection.cs @@ -24,7 +24,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http3 { internal class Http3Connection : IHttp3StreamLifetimeHandler, IRequestProcessor { - private static readonly object StreamPersistentStateKey = new object(); + internal static readonly object StreamPersistentStateKey = new object(); // Internal for unit testing internal readonly Dictionary<long, IHttp3Stream> _streams = new Dictionary<long, IHttp3Stream>(); diff --git a/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Stream.cs b/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Stream.cs index ea69197bc27e093dde66de59fe862a0cb337709d..c1086dc02a85773b6b95827aa2eecd10ec64f874 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Stream.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Stream.cs @@ -662,6 +662,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http3 InputRemaining = HttpRequestHeaders.ContentLength; + OnHeadersComplete(); + // If the stream is complete after receiving the headers then run OnEndStreamReceived. // If there is a bad content length then this will throw before the request delegate is called. if (isCompleted) diff --git a/src/Servers/Kestrel/test/InMemory.FunctionalTests/Http2/Http2ConnectionTests.cs b/src/Servers/Kestrel/test/InMemory.FunctionalTests/Http2/Http2ConnectionTests.cs index 3016d57237f53851c5c5d7ba1f5c5a737f5b0d62..6a9656d9f730a439104309258ebc17e5082182dc 100644 --- a/src/Servers/Kestrel/test/InMemory.FunctionalTests/Http2/Http2ConnectionTests.cs +++ b/src/Servers/Kestrel/test/InMemory.FunctionalTests/Http2/Http2ConnectionTests.cs @@ -10,6 +10,7 @@ using System.IO; using System.Linq; using System.Net.Http; using System.Net.Http.HPack; +using System.Reflection; using System.Text; using System.Threading; using System.Threading.Tasks; @@ -211,6 +212,73 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests await StopConnectionAsync(expectedLastStreamId: 3, ignoreNonGoAwayFrames: false); } + [Fact] + public async Task RequestHeaderStringReuse_MultipleStreams_KnownHeaderClearedIfNotReused() + { + const BindingFlags privateFlags = BindingFlags.NonPublic | BindingFlags.Instance; + + IEnumerable<KeyValuePair<string, string>> requestHeaders1 = new[] + { + new KeyValuePair<string, string>(HeaderNames.Method, "GET"), + new KeyValuePair<string, string>(HeaderNames.Path, "/hello"), + new KeyValuePair<string, string>(HeaderNames.Scheme, "http"), + new KeyValuePair<string, string>(HeaderNames.Authority, "localhost:80"), + new KeyValuePair<string, string>(HeaderNames.ContentType, "application/json") + }; + + // Note: No content-type + IEnumerable<KeyValuePair<string, string>> requestHeaders2 = new[] + { + new KeyValuePair<string, string>(HeaderNames.Method, "GET"), + new KeyValuePair<string, string>(HeaderNames.Path, "/hello"), + new KeyValuePair<string, string>(HeaderNames.Scheme, "http"), + new KeyValuePair<string, string>(HeaderNames.Authority, "localhost:80") + }; + + await InitializeConnectionAsync(_noopApplication); + + await StartStreamAsync(1, requestHeaders1, endStream: true); + + await ExpectAsync(Http2FrameType.HEADERS, + withLength: 36, + withFlags: (byte)(Http2HeadersFrameFlags.END_HEADERS | Http2HeadersFrameFlags.END_STREAM), + withStreamId: 1); + + // TriggerTick will trigger the stream to be returned to the pool so we can assert it + TriggerTick(_serviceContext.MockSystemClock.UtcNow); + + // Stream has been returned to the pool + Assert.Equal(1, _connection.StreamPool.Count); + Assert.True(_connection.StreamPool.TryPeek(out var stream1)); + + // Hacky but required because header references is private. + var headerReferences1 = typeof(HttpRequestHeaders).GetField("_headers", privateFlags).GetValue(stream1.RequestHeaders); + var contentTypeValue1 = (StringValues)headerReferences1.GetType().GetField("_ContentType").GetValue(headerReferences1); + + await StartStreamAsync(3, requestHeaders2, endStream: true); + + await ExpectAsync(Http2FrameType.HEADERS, + withLength: 6, + withFlags: (byte)(Http2HeadersFrameFlags.END_HEADERS | Http2HeadersFrameFlags.END_STREAM), + withStreamId: 3); + + // TriggerTick will trigger the stream to be returned to the pool so we can assert it + TriggerTick(_serviceContext.MockSystemClock.UtcNow); + + // Stream has been returned to the pool + Assert.Equal(1, _connection.StreamPool.Count); + Assert.True(_connection.StreamPool.TryPeek(out var stream2)); + + // Hacky but required because header references is private. + var headerReferences2 = typeof(HttpRequestHeaders).GetField("_headers", privateFlags).GetValue(stream2.RequestHeaders); + var contentTypeValue2 = (StringValues)headerReferences2.GetType().GetField("_ContentType").GetValue(headerReferences2); + + Assert.Equal("application/json", contentTypeValue1); + Assert.Equal(StringValues.Empty, contentTypeValue2); + + await StopConnectionAsync(expectedLastStreamId: 3, ignoreNonGoAwayFrames: false); + } + private class ResponseTrailersWrapper : IHeaderDictionary { readonly IHeaderDictionary _innerHeaders; diff --git a/src/Servers/Kestrel/test/InMemory.FunctionalTests/Http3/Http3ConnectionTests.cs b/src/Servers/Kestrel/test/InMemory.FunctionalTests/Http3/Http3ConnectionTests.cs index ead3a1656bdc398134a0d7f948b1d61193d8ffc2..b83f3b64deb4e77523d72750d48f3d79945de2a0 100644 --- a/src/Servers/Kestrel/test/InMemory.FunctionalTests/Http3/Http3ConnectionTests.cs +++ b/src/Servers/Kestrel/test/InMemory.FunctionalTests/Http3/Http3ConnectionTests.cs @@ -6,14 +6,18 @@ using System.Buffers; using System.Collections.Generic; using System.Globalization; using System.Net.Http; +using System.Reflection; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using Microsoft.AspNetCore.Connections; +using Microsoft.AspNetCore.Connections.Features; using Microsoft.AspNetCore.Http.Features; +using Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http; using Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http3; using Microsoft.AspNetCore.Testing; using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Primitives; using Microsoft.Net.Http.Headers; using Xunit; using Http3SettingType = Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http3.Http3SettingType; @@ -334,6 +338,49 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests Assert.Same(streamContext1, streamContext2); } + [Fact] + public async Task RequestHeaderStringReuse_MultipleStreams_KnownHeaderClearedIfNotReused() + { + const BindingFlags privateFlags = BindingFlags.NonPublic | BindingFlags.Instance; + + KeyValuePair<string, string>[] requestHeaders1 = new[] + { + new KeyValuePair<string, string>(HeaderNames.Method, "GET"), + new KeyValuePair<string, string>(HeaderNames.Path, "/hello"), + new KeyValuePair<string, string>(HeaderNames.Scheme, "http"), + new KeyValuePair<string, string>(HeaderNames.Authority, "localhost:80"), + new KeyValuePair<string, string>(HeaderNames.ContentType, "application/json") + }; + + // Note: No content-type + KeyValuePair<string, string>[] requestHeaders2 = new[] + { + new KeyValuePair<string, string>(HeaderNames.Method, "GET"), + new KeyValuePair<string, string>(HeaderNames.Path, "/hello"), + new KeyValuePair<string, string>(HeaderNames.Scheme, "http"), + new KeyValuePair<string, string>(HeaderNames.Authority, "localhost:80") + }; + + await Http3Api.InitializeConnectionAsync(_echoApplication); + + var streamContext1 = await MakeRequestAsync(0, requestHeaders1, sendData: true, waitForServerDispose: true); + var http3Stream1 = (Http3Stream)streamContext1.Features.Get<IPersistentStateFeature>().State[Http3Connection.StreamPersistentStateKey]; + + // Hacky but required because header references is private. + var headerReferences1 = typeof(HttpRequestHeaders).GetField("_headers", privateFlags).GetValue(http3Stream1.RequestHeaders); + var contentTypeValue1 = (StringValues)headerReferences1.GetType().GetField("_ContentType").GetValue(headerReferences1); + + var streamContext2 = await MakeRequestAsync(1, requestHeaders2, sendData: true, waitForServerDispose: true); + var http3Stream2 = (Http3Stream)streamContext2.Features.Get<IPersistentStateFeature>().State[Http3Connection.StreamPersistentStateKey]; + + // Hacky but required because header references is private. + var headerReferences2 = typeof(HttpRequestHeaders).GetField("_headers", privateFlags).GetValue(http3Stream2.RequestHeaders); + var contentTypeValue2 = (StringValues)headerReferences1.GetType().GetField("_ContentType").GetValue(headerReferences2); + + Assert.Equal("application/json", contentTypeValue1); + Assert.Equal(StringValues.Empty, contentTypeValue2); + } + [Theory] [InlineData(10)] [InlineData(100)]