diff --git a/NuGet.config b/NuGet.config index 386a0a813f85..5a69dbe9068f 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,10 +4,10 @@ - + - + @@ -26,10 +26,10 @@ - + - + diff --git a/eng/Baseline.Designer.props b/eng/Baseline.Designer.props index 85bfbc5f8f04..da411aa20037 100644 --- a/eng/Baseline.Designer.props +++ b/eng/Baseline.Designer.props @@ -2,138 +2,138 @@ $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - - - + + + - + - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - + - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 @@ -141,263 +141,263 @@ - 7.0.2 + 7.0.3 - + - + - + - + - + - + - 7.0.2 + 7.0.3 - + - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - + - 7.0.2 + 7.0.3 - - + + - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - - + + - 7.0.2 + 7.0.3 - + - 7.0.2 + 7.0.3 - + - 7.0.2 + 7.0.3 - - - + + + - 7.0.2 + 7.0.3 - - - + + + - 7.0.2 + 7.0.3 - - + + - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - - - + + + - 7.0.2 + 7.0.3 - + - 7.0.2 + 7.0.3 - + - + - + - + - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - + - + - + - 7.0.2 + 7.0.3 - - + + - + - - + + - + - - + + - + - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - - + + - 7.0.2 + 7.0.3 - + - + - + - 7.0.2 + 7.0.3 - + - + - + - 7.0.2 + 7.0.3 - + - 7.0.2 + 7.0.3 @@ -406,15 +406,15 @@ - 0.3.2 + 0.3.3 - + - 7.0.2 + 7.0.3 @@ -422,71 +422,71 @@ - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - + - + - + - + - + - + - + - + - 7.0.2 + 7.0.3 - - + + - + - - + + - 7.0.2 + 7.0.3 - - + + - 7.0.2 + 7.0.3 - - + + - 7.0.2 + 7.0.3 @@ -502,27 +502,27 @@ - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - + - 7.0.2 + 7.0.3 @@ -531,254 +531,254 @@ - 7.0.2 + 7.0.3 - + - + - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - - + + - - + + - - + + - 7.0.2 + 7.0.3 - - + + - - + + - - + + - - + + - 7.0.2 + 7.0.3 - - + + - + - - + + - - - + + + - 7.0.2 + 7.0.3 - + - + - + - 7.0.2 + 7.0.3 - + - + - + - 7.0.2 + 7.0.3 - + - + - + - 7.0.2 + 7.0.3 - - - - + + + + - 7.0.2 + 7.0.3 - + - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - + - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - + - + - + - 7.0.2 + 7.0.3 - + - + - + - 7.0.2 + 7.0.3 @@ -794,46 +794,46 @@ - 7.0.2 + 7.0.3 - + - + - + - + - + - + - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - - - + + + - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 @@ -843,7 +843,7 @@ - 7.0.2 + 7.0.3 @@ -852,73 +852,73 @@ - 7.0.2 + 7.0.3 - + - + - + - + - + - + - 7.0.2 + 7.0.3 - + - + - + - 7.0.2 + 7.0.3 - + - + - + - + - + - + - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 @@ -947,35 +947,35 @@ - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - + - + - + - 7.0.2 + 7.0.3 - 7.0.2 + 7.0.3 - + \ No newline at end of file diff --git a/eng/Baseline.xml b/eng/Baseline.xml index 839f499bd11f..a0f8fab4c27d 100644 --- a/eng/Baseline.xml +++ b/eng/Baseline.xml @@ -4,109 +4,109 @@ This file contains a list of all the packages and their versions which were rele Update this list when preparing for a new patch. --> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3245c9737666..2314f2d65fa2 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -9,37 +9,37 @@ --> - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 01a74ccf9db71c23785f6a6ace038fed2ee7ae41 + e2a4877d7a05d5cf6e6c790913a9aa73d4e89494 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 01a74ccf9db71c23785f6a6ace038fed2ee7ae41 + e2a4877d7a05d5cf6e6c790913a9aa73d4e89494 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 01a74ccf9db71c23785f6a6ace038fed2ee7ae41 + e2a4877d7a05d5cf6e6c790913a9aa73d4e89494 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 01a74ccf9db71c23785f6a6ace038fed2ee7ae41 + e2a4877d7a05d5cf6e6c790913a9aa73d4e89494 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 01a74ccf9db71c23785f6a6ace038fed2ee7ae41 + e2a4877d7a05d5cf6e6c790913a9aa73d4e89494 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 01a74ccf9db71c23785f6a6ace038fed2ee7ae41 + e2a4877d7a05d5cf6e6c790913a9aa73d4e89494 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 01a74ccf9db71c23785f6a6ace038fed2ee7ae41 + e2a4877d7a05d5cf6e6c790913a9aa73d4e89494 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 01a74ccf9db71c23785f6a6ace038fed2ee7ae41 + e2a4877d7a05d5cf6e6c790913a9aa73d4e89494 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -53,9 +53,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime d099f075e45d2aa6007a22b71b45a08758559f80 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0a2bda10e81d901396c3cff95533529e3a93ad47 + 0a396acafe9a7d46bce11f4338dbb3dd0d99b1b4 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -177,9 +177,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime d099f075e45d2aa6007a22b71b45a08758559f80 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0a2bda10e81d901396c3cff95533529e3a93ad47 + 0a396acafe9a7d46bce11f4338dbb3dd0d99b1b4 https://github.com/dotnet/source-build-externals @@ -190,9 +190,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime d099f075e45d2aa6007a22b71b45a08758559f80 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0a2bda10e81d901396c3cff95533529e3a93ad47 + 0a396acafe9a7d46bce11f4338dbb3dd0d99b1b4 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -206,17 +206,17 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime d099f075e45d2aa6007a22b71b45a08758559f80 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d099f075e45d2aa6007a22b71b45a08758559f80 + 0a396acafe9a7d46bce11f4338dbb3dd0d99b1b4 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime d099f075e45d2aa6007a22b71b45a08758559f80 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d099f075e45d2aa6007a22b71b45a08758559f80 + 0a396acafe9a7d46bce11f4338dbb3dd0d99b1b4 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -262,33 +262,33 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime d099f075e45d2aa6007a22b71b45a08758559f80 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0a2bda10e81d901396c3cff95533529e3a93ad47 + 0a396acafe9a7d46bce11f4338dbb3dd0d99b1b4 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0a2bda10e81d901396c3cff95533529e3a93ad47 + 0a396acafe9a7d46bce11f4338dbb3dd0d99b1b4 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0a2bda10e81d901396c3cff95533529e3a93ad47 + 0a396acafe9a7d46bce11f4338dbb3dd0d99b1b4 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0a2bda10e81d901396c3cff95533529e3a93ad47 + 0a396acafe9a7d46bce11f4338dbb3dd0d99b1b4 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0a2bda10e81d901396c3cff95533529e3a93ad47 + 0a396acafe9a7d46bce11f4338dbb3dd0d99b1b4 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0a2bda10e81d901396c3cff95533529e3a93ad47 + 0a396acafe9a7d46bce11f4338dbb3dd0d99b1b4 https://github.com/dotnet/xdt @@ -298,26 +298,26 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d099f075e45d2aa6007a22b71b45a08758559f80 + 0a396acafe9a7d46bce11f4338dbb3dd0d99b1b4 - + https://github.com/dotnet/arcade - 5f8519337c864af63b8692754ca0fa971bfc55d4 + 4625a29565a94d3b8c5c680c8f1f1d53b2f216f5 - + https://github.com/dotnet/arcade - 5f8519337c864af63b8692754ca0fa971bfc55d4 + 4625a29565a94d3b8c5c680c8f1f1d53b2f216f5 - + https://github.com/dotnet/arcade - 5f8519337c864af63b8692754ca0fa971bfc55d4 + 4625a29565a94d3b8c5c680c8f1f1d53b2f216f5 - + https://github.com/dotnet/arcade - 5f8519337c864af63b8692754ca0fa971bfc55d4 + 4625a29565a94d3b8c5c680c8f1f1d53b2f216f5 diff --git a/eng/Versions.props b/eng/Versions.props index 399f7712ab30..12deff6791ee 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -8,7 +8,7 @@ 7 0 - 3 + 4 true 7.0.0 - 7.0.3 - 7.0.3 - 7.0.3 - 7.0.3 - 7.0.3 - 7.0.3-servicing.23069.10 + 7.0.4 + 7.0.4 + 7.0.4 + 7.0.4 + 7.0.4 + 7.0.4-servicing.23115.8 7.0.0 7.0.0 7.0.0 - 7.0.3 + 7.0.4 7.0.0 7.0.0 7.0.0 @@ -103,15 +103,15 @@ 7.0.0 7.0.1 7.0.0 - 7.0.3-servicing.23069.10 + 7.0.4-servicing.23115.8 7.0.0 - 7.0.1 + 7.0.2 7.0.0 7.0.0 7.0.0 - 7.0.0 + 7.0.1 7.0.0 - 7.0.0 + 7.0.1 7.0.0 7.0.1 7.0.1 @@ -123,19 +123,19 @@ 7.0.0 7.0.0 - 7.0.0 + 7.0.1 - 7.0.3 - 7.0.3 - 7.0.3 - 7.0.3 - 7.0.3 - 7.0.3 - 7.0.3 - 7.0.3 + 7.0.4 + 7.0.4 + 7.0.4 + 7.0.4 + 7.0.4 + 7.0.4 + 7.0.4 + 7.0.4 - 7.0.0-beta.23073.6 - 7.0.0-beta.23073.6 + 7.0.0-beta.23114.3 + 7.0.0-beta.23114.3 7.0.0-alpha.1.22505.1 @@ -238,7 +238,7 @@ 5.0.17-servicing-22215-7 $(MicrosoftAspNetCoreAzureAppServicesSiteExtension50Version) $(MicrosoftAspNetCoreAzureAppServicesSiteExtension50Version) - 6.0.13-servicing-22580-13 + 6.0.14-servicing-23074-3 $(MicrosoftAspNetCoreAzureAppServicesSiteExtension60Version) $(MicrosoftAspNetCoreAzureAppServicesSiteExtension60Version) diff --git a/eng/common/generate-locproject.ps1 b/eng/common/generate-locproject.ps1 index bab18543d6c4..bcb579e37a91 100644 --- a/eng/common/generate-locproject.ps1 +++ b/eng/common/generate-locproject.ps1 @@ -34,6 +34,25 @@ $jsonTemplateFiles | ForEach-Object { $jsonWinformsTemplateFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "en\\strings\.json" } # current winforms pattern $wxlFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "\\.+\.wxl" -And -Not( $_.Directory.Name -Match "\d{4}" ) } # localized files live in four digit lang ID directories; this excludes them +if (-not $wxlFiles) { + $wxlEnFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "\\1033\\.+\.wxl" } # pick up en files (1033 = en) specifically so we can copy them to use as the neutral xlf files + if ($wxlEnFiles) { + $wxlFiles = @() + $wxlEnFiles | ForEach-Object { + $destinationFile = "$($_.Directory.Parent.FullName)\$($_.Name)" + $wxlFiles += Copy-Item "$($_.FullName)" -Destination $destinationFile -PassThru + } + } +} + +$macosHtmlEnFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "en\.lproj\\.+\.html" } # add installer HTML files +$macosHtmlFiles = @() +if ($macosHtmlEnFiles) { + $macosHtmlEnFiles | ForEach-Object { + $destinationFile = "$($_.Directory.Parent.FullName)\$($_.Name)" + $macosHtmlFiles += Copy-Item "$($_.FullName)" -Destination $destinationFile -PassThru + } +} $xlfFiles = @() @@ -91,6 +110,7 @@ $locJson = @{ ) }, @{ + LanguageSet = $LanguageSet CloneLanguageSet = "WiX_CloneLanguages" LssFiles = @( "wxl_loc.lss" ) LocItems = @( @@ -98,8 +118,7 @@ $locJson = @{ $outputPath = "$($_.Directory.FullName | Resolve-Path -Relative)\" $continue = $true foreach ($exclusion in $exclusions.Exclusions) { - if ($_.FullName.Contains($exclusion)) - { + if ($_.FullName.Contains($exclusion)) { $continue = $false } } @@ -110,7 +129,30 @@ $locJson = @{ SourceFile = $sourceFile CopyOption = "LangIDOnPath" OutputPath = $outputPath - Languages = "cs-CZ;de-DE;es-ES;fr-FR;it-IT;ja-JP;ko-KR;pl-PL;pt-BR;ru-RU;tr-TR;zh-CN;zh-TW" + } + } + } + ) + }, + @{ + LanguageSet = $LanguageSet + CloneLanguageSet = "VS_macOS_CloneLanguages" + LssFiles = @( ".\eng\common\loc\P22DotNetHtmlLocalization.lss" ) + LocItems = @( + $macosHtmlFiles | ForEach-Object { + $outputPath = "$($_.Directory.FullName | Resolve-Path -Relative)\" + $continue = $true + foreach ($exclusion in $exclusions.Exclusions) { + if ($_.FullName.Contains($exclusion)) { + $continue = $false + } + } + $sourceFile = ($_.FullName | Resolve-Path -Relative) + if ($continue) { + return @{ + SourceFile = $sourceFile + CopyOption = "LangIDOnPath" + OutputPath = $outputPath } } } diff --git a/eng/common/loc/P22DotNetHtmlLocalization.lss b/eng/common/loc/P22DotNetHtmlLocalization.lss new file mode 100644 index 000000000000..6661fed566e4 Binary files /dev/null and b/eng/common/loc/P22DotNetHtmlLocalization.lss differ diff --git a/eng/common/templates/job/execute-sdl.yml b/eng/common/templates/job/execute-sdl.yml index aaeb83b4dcbd..7c164ac02f4d 100644 --- a/eng/common/templates/job/execute-sdl.yml +++ b/eng/common/templates/job/execute-sdl.yml @@ -46,6 +46,7 @@ jobs: - template: /eng/common/templates/variables/sdl-variables.yml - name: GuardianVersion value: ${{ coalesce(parameters.overrideGuardianVersion, '$(DefaultGuardianVersion)') }} + - template: /eng/common/templates/variables/pool-providers.yml pool: # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: @@ -53,7 +54,7 @@ jobs: demands: Cmd # If it's not devdiv, it's dnceng ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: - name: NetCore1ESPool-Svc-Internal + name: $(DncEngInternalBuildPool) demands: ImageOverride -equals windows.vs2019.amd64 steps: - checkout: self diff --git a/eng/common/templates/job/onelocbuild.yml b/eng/common/templates/job/onelocbuild.yml index 6b8fc9970808..60ab00c4de3a 100644 --- a/eng/common/templates/job/onelocbuild.yml +++ b/eng/common/templates/job/onelocbuild.yml @@ -14,6 +14,7 @@ parameters: ReusePr: true UseLfLineEndings: true UseCheckedInLocProjectJson: false + SkipLocProjectJsonGeneration: false LanguageSet: VS_Main_Languages LclSource: lclFilesInRepo LclPackageId: '' @@ -22,13 +23,25 @@ parameters: MirrorRepo: '' MirrorBranch: main condition: '' + JobNameSuffix: '' jobs: -- job: OneLocBuild +- job: OneLocBuild${{ parameters.JobNameSuffix }} dependsOn: ${{ parameters.dependsOn }} - displayName: OneLocBuild + displayName: OneLocBuild${{ parameters.JobNameSuffix }} + + variables: + - group: OneLocBuildVariables # Contains the CeapexPat and GithubPat + - name: _GenerateLocProjectArguments + value: -SourcesDirectory ${{ parameters.SourcesDirectory }} + -LanguageSet "${{ parameters.LanguageSet }}" + -CreateNeutralXlfs + - ${{ if eq(parameters.UseCheckedInLocProjectJson, 'true') }}: + - name: _GenerateLocProjectArguments + value: ${{ variables._GenerateLocProjectArguments }} -UseCheckedInLocProjectJson + - template: /eng/common/templates/variables/pool-providers.yml ${{ if ne(parameters.pool, '') }}: pool: ${{ parameters.pool }} @@ -40,27 +53,17 @@ jobs: demands: Cmd # If it's not devdiv, it's dnceng ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: - name: NetCore1ESPool-Svc-Internal + name: $(DncEngInternalBuildPool) demands: ImageOverride -equals windows.vs2019.amd64 - variables: - - group: OneLocBuildVariables # Contains the CeapexPat and GithubPat - - name: _GenerateLocProjectArguments - value: -SourcesDirectory ${{ parameters.SourcesDirectory }} - -LanguageSet "${{ parameters.LanguageSet }}" - -CreateNeutralXlfs - - ${{ if eq(parameters.UseCheckedInLocProjectJson, 'true') }}: - - name: _GenerateLocProjectArguments - value: ${{ variables._GenerateLocProjectArguments }} -UseCheckedInLocProjectJson - - steps: - - task: Powershell@2 - inputs: - filePath: $(Build.SourcesDirectory)/eng/common/generate-locproject.ps1 - arguments: $(_GenerateLocProjectArguments) - displayName: Generate LocProject.json - condition: ${{ parameters.condition }} + - ${{ if ne(parameters.SkipLocProjectJsonGeneration, 'true') }}: + - task: Powershell@2 + inputs: + filePath: $(Build.SourcesDirectory)/eng/common/generate-locproject.ps1 + arguments: $(_GenerateLocProjectArguments) + displayName: Generate LocProject.json + condition: ${{ parameters.condition }} - task: OneLocBuild@2 displayName: OneLocBuild diff --git a/eng/common/templates/job/publish-build-assets.yml b/eng/common/templates/job/publish-build-assets.yml index 1cbb6a0c5600..c5fedd7f70ce 100644 --- a/eng/common/templates/job/publish-build-assets.yml +++ b/eng/common/templates/job/publish-build-assets.yml @@ -34,15 +34,15 @@ jobs: - job: Asset_Registry_Publish dependsOn: ${{ parameters.dependsOn }} + timeoutInMinutes: 150 ${{ if eq(parameters.publishAssetsImmediately, 'true') }}: displayName: Publish Assets ${{ else }}: displayName: Publish to Build Asset Registry - pool: ${{ parameters.pool }} - variables: + - template: /eng/common/templates/variables/pool-providers.yml - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - group: Publish-Build-Assets - group: AzureDevOps-Artifact-Feeds-Pats @@ -51,6 +51,16 @@ jobs: - ${{ if eq(parameters.publishAssetsImmediately, 'true') }}: - template: /eng/common/templates/post-build/common-variables.yml + pool: + # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + name: VSEngSS-MicroBuild2022-1ES + demands: Cmd + # If it's not devdiv, it's dnceng + ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: + name: $(DncEngInternalBuildPool) + demands: ImageOverride -equals windows.vs2019.amd64 + steps: - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - task: DownloadBuildArtifacts@0 diff --git a/eng/common/templates/job/source-build.yml b/eng/common/templates/job/source-build.yml index b6137f44ada1..8a3deef2b727 100644 --- a/eng/common/templates/job/source-build.yml +++ b/eng/common/templates/job/source-build.yml @@ -44,13 +44,16 @@ jobs: ${{ if eq(parameters.platform.pool, '') }}: # The default VM host AzDO pool. This should be capable of running Docker containers: almost all # source-build builds run in Docker, including the default managed platform. + # /eng/common/templates/variables/pool-providers.yml can't be used here (some customers declare variables already), so duplicate its logic pool: ${{ if eq(variables['System.TeamProject'], 'public') }}: - name: NetCore-Svc-Public + name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')] demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open + ${{ if eq(variables['System.TeamProject'], 'internal') }}: - name: NetCore1ESPool-Svc-Internal + name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')] demands: ImageOverride -equals Build.Ubuntu.1804.Amd64 + ${{ if ne(parameters.platform.pool, '') }}: pool: ${{ parameters.platform.pool }} diff --git a/eng/common/templates/job/source-index-stage1.yml b/eng/common/templates/job/source-index-stage1.yml index 59a42c338ab1..09c506d11855 100644 --- a/eng/common/templates/job/source-index-stage1.yml +++ b/eng/common/templates/job/source-index-stage1.yml @@ -22,16 +22,17 @@ jobs: value: ${{ parameters.binlogPath }} - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - group: source-dot-net stage1 variables + - template: /eng/common/templates/variables/pool-providers.yml ${{ if ne(parameters.pool, '') }}: pool: ${{ parameters.pool }} ${{ if eq(parameters.pool, '') }}: pool: ${{ if eq(variables['System.TeamProject'], 'public') }}: - name: NetCore-Svc-Public + name: $(DncEngPublicBuildPool) demands: ImageOverride -equals windows.vs2019.amd64.open ${{ if eq(variables['System.TeamProject'], 'internal') }}: - name: NetCore1ESPool-Svc-Internal + name: $(DncEngInternalBuildPool) demands: ImageOverride -equals windows.vs2019.amd64 steps: diff --git a/eng/common/templates/jobs/jobs.yml b/eng/common/templates/jobs/jobs.yml index 297e7946b0be..289bb2396ce8 100644 --- a/eng/common/templates/jobs/jobs.yml +++ b/eng/common/templates/jobs/jobs.yml @@ -88,15 +88,6 @@ jobs: - ${{ job.job }} - ${{ if eq(parameters.enableSourceBuild, true) }}: - Source_Build_Complete - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: VSEngSS-MicroBuild2022-1ES - demands: Cmd - # If it's not devdiv, it's dnceng - ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: - name: NetCore1ESPool-Svc-Internal - demands: ImageOverride -equals windows.vs2019.amd64 runAsPublic: ${{ parameters.runAsPublic }} publishUsingPipelines: ${{ parameters.enablePublishUsingPipelines }} diff --git a/eng/common/templates/post-build/post-build.yml b/eng/common/templates/post-build/post-build.yml index 957375c1c1a6..c051f1b65e9c 100644 --- a/eng/common/templates/post-build/post-build.yml +++ b/eng/common/templates/post-build/post-build.yml @@ -95,6 +95,7 @@ stages: displayName: Validate Build Assets variables: - template: common-variables.yml + - template: /eng/common/templates/variables/pool-providers.yml jobs: - job: displayName: NuGet Validation @@ -106,7 +107,7 @@ stages: demands: Cmd # If it's not devdiv, it's dnceng ${{ else }}: - name: NetCore1ESPool-Svc-Internal + name: $(DncEngInternalBuildPool) demands: ImageOverride -equals windows.vs2019.amd64 steps: @@ -143,7 +144,7 @@ stages: demands: Cmd # If it's not devdiv, it's dnceng ${{ else }}: - name: NetCore1ESPool-Svc-Internal + name: $(DncEngInternalBuildPool) demands: ImageOverride -equals windows.vs2019.amd64 steps: - template: setup-maestro-vars.yml @@ -203,7 +204,7 @@ stages: demands: Cmd # If it's not devdiv, it's dnceng ${{ else }}: - name: NetCore1ESPool-Svc-Internal + name: $(DncEngInternalBuildPool) demands: ImageOverride -equals windows.vs2019.amd64 steps: - template: setup-maestro-vars.yml @@ -251,6 +252,7 @@ stages: displayName: Publish using Darc variables: - template: common-variables.yml + - template: /eng/common/templates/variables/pool-providers.yml jobs: - job: displayName: Publish Using Darc @@ -262,7 +264,7 @@ stages: demands: Cmd # If it's not devdiv, it's dnceng ${{ else }}: - name: NetCore1ESPool-Svc-Internal + name: $(DncEngInternalBuildPool) demands: ImageOverride -equals windows.vs2019.amd64 steps: - template: setup-maestro-vars.yml @@ -282,4 +284,4 @@ stages: -MaestroToken '$(MaestroApiAccessToken)' -WaitPublishingFinish true -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' - -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' \ No newline at end of file + -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' diff --git a/eng/common/templates/variables/pool-providers.yml b/eng/common/templates/variables/pool-providers.yml new file mode 100644 index 000000000000..99c80212bac1 --- /dev/null +++ b/eng/common/templates/variables/pool-providers.yml @@ -0,0 +1,57 @@ +# Select a pool provider based off branch name. Anything with branch name containing 'release' must go into an -Svc pool, +# otherwise it should go into the "normal" pools. This separates out the queueing and billing of released branches. + +# Motivation: +# Once a given branch of a repository's output has been officially "shipped" once, it is then considered to be COGS +# (Cost of goods sold) and should be moved to a servicing pool provider. This allows both separation of queueing +# (allowing release builds and main PR builds to not intefere with each other) and billing (required for COGS) +# Additionally, the pool provider name itself may be subject to change when the .NET Core Engineering Services +# team needs to move resources around and create new and potentially differently-named pools. Using this template +# file from an Arcade-ified repo helps guard against both having to update one's release/* branches and renaming. + +# How to use: +# This yaml assumes your shipped product branches use the naming convention "release/..." (which many do). +# If we find alternate naming conventions in broad usage these can be added to the condition below. +# +# First, import the template in an arcade-ified repo to pick up the variables, e.g.: +# +# variables: +# - template: /eng/common/templates/variables/pool-providers.yml +# +# ... then anywhere specifying the pool provider use the runtime variables, +# $(DncEngInternalBuildPool) and $ (DncEngPublicBuildPool), e.g.: +# +# pool: +# name: $(DncEngInternalBuildPool) +# demands: ImageOverride -equals windows.vs2019.amd64 + +variables: + # Coalesce the target and source branches so we know when a PR targets a release branch + # If these variables are somehow missing, fall back to main (tends to have more capacity) + + # Any new -Svc alternative pools should have variables added here to allow for splitting work + - name: DncEngPublicBuildPool + value: $[ + replace( + replace( + eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), + True, + 'NetCore-Svc-Public' + ), + False, + 'NetCore-Public' + ) + ] + + - name: DncEngInternalBuildPool + value: $[ + replace( + replace( + eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), + True, + 'NetCore1ESPool-Svc-Internal' + ), + False, + 'NetCore1ESPool-Internal' + ) + ] \ No newline at end of file diff --git a/global.json b/global.json index 956c20ef2193..4648b9ed9518 100644 --- a/global.json +++ b/global.json @@ -1,9 +1,9 @@ { "sdk": { - "version": "7.0.102" + "version": "7.0.103" }, "tools": { - "dotnet": "7.0.102", + "dotnet": "7.0.103", "runtimes": { "dotnet/x86": [ "$(MicrosoftNETCoreBrowserDebugHostTransportVersion)" @@ -27,7 +27,7 @@ }, "msbuild-sdks": { "Yarn.MSBuild": "1.22.10", - "Microsoft.DotNet.Arcade.Sdk": "7.0.0-beta.23073.6", - "Microsoft.DotNet.Helix.Sdk": "7.0.0-beta.23073.6" + "Microsoft.DotNet.Arcade.Sdk": "7.0.0-beta.23114.3", + "Microsoft.DotNet.Helix.Sdk": "7.0.0-beta.23114.3" } } diff --git a/src/Framework/test/TargetingPackTests.cs b/src/Framework/test/TargetingPackTests.cs index 76be10479af3..296eed5cb569 100644 --- a/src/Framework/test/TargetingPackTests.cs +++ b/src/Framework/test/TargetingPackTests.cs @@ -199,7 +199,10 @@ public void AssembliesAreReferenceAssemblies() Assert.True(hasRefAssemblyAttribute, $"{path} should have {nameof(ReferenceAssemblyAttribute)}"); #pragma warning disable SYSLIB0037 // AssemblyName.ProcessorArchitecture is obsolete - Assert.Equal(ProcessorArchitecture.None, assemblyName.ProcessorArchitecture); + // MSIL and None represent platform neutral assemblies such that reference assemblies can always be loaded. + Assert.True(assemblyName.ProcessorArchitecture == ProcessorArchitecture.MSIL || + assemblyName.ProcessorArchitecture == ProcessorArchitecture.None + ); #pragma warning restore SYSLIB0037 }); } diff --git a/src/Servers/Kestrel/test/Interop.FunctionalTests/HttpClientHttp2InteropTests.cs b/src/Servers/Kestrel/test/Interop.FunctionalTests/HttpClientHttp2InteropTests.cs index 6ab377f47815..7029c532f15b 100644 --- a/src/Servers/Kestrel/test/Interop.FunctionalTests/HttpClientHttp2InteropTests.cs +++ b/src/Servers/Kestrel/test/Interop.FunctionalTests/HttpClientHttp2InteropTests.cs @@ -1353,15 +1353,16 @@ public async Task Settings_MaxHeaderListSize_Server(string scheme) { ConfigureKestrel(webHostBuilder, scheme); webHostBuilder.ConfigureServices(AddTestLogging) - .Configure(app => app.Run(context => throw new NotImplementedException())); + .Configure(app => app.Run(context => context.Response.WriteAsync("Hello World"))); }); using var host = await hostBuilder.StartAsync().DefaultTimeout(); var url = host.MakeUrl(scheme); using var client = CreateClient(); - // There's no point in waiting for the settings to sync, the client doesn't check the header list size setting. - // https://github.com/dotnet/runtime/blob/48a78bfa13e9c710851690621fc2c0fe1637802c/src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/Http2Connection.cs#L467-L494 + // Send an initial request to ensure the settings get synced before the real test. + var responseBody = await client.GetStringAsync(url).DefaultTimeout(); + Assert.Equal("Hello World", responseBody); var request = CreateRequestMessage(HttpMethod.Get, url, content: null); // The default size limit is 32kb. @@ -1369,10 +1370,10 @@ public async Task Settings_MaxHeaderListSize_Server(string scheme) { request.Headers.Add("header" + i, oneKbString + i); } - var response = await client.SendAsync(request).DefaultTimeout(); - await host.StopAsync().DefaultTimeout(); + var ex = await Assert.ThrowsAsync(() => client.SendAsync(request).DefaultTimeout()); + Assert.Equal("The HTTP request headers length exceeded the server limit of 32768 bytes.", ex.Message); - Assert.Equal(HttpStatusCode.RequestHeaderFieldsTooLarge, response.StatusCode); + await host.StopAsync().DefaultTimeout(); } [Theory] diff --git a/src/SignalR/server/Core/src/DefaultHubLifetimeManager.cs b/src/SignalR/server/Core/src/DefaultHubLifetimeManager.cs index 230af87fc33e..48f04e5265d6 100644 --- a/src/SignalR/server/Core/src/DefaultHubLifetimeManager.cs +++ b/src/SignalR/server/Core/src/DefaultHubLifetimeManager.cs @@ -3,7 +3,6 @@ using System.Collections.Concurrent; using System.Diagnostics.CodeAnalysis; -using System.Globalization; using System.Linq; using Microsoft.AspNetCore.SignalR.Internal; using Microsoft.AspNetCore.SignalR.Protocol; @@ -340,7 +339,10 @@ public override async Task InvokeConnectionAsync(string connectionId, stri throw new IOException($"Connection '{connectionId}' does not exist."); } - var invocationId = Interlocked.Increment(ref _lastInvocationId).ToString(NumberFormatInfo.InvariantInfo); + var id = Interlocked.Increment(ref _lastInvocationId); + // prefix the client result ID with 's' for server, so that it won't conflict with other CompletionMessage's from the client + // e.g. Stream IDs when completing + var invocationId = $"s{id}"; using var _ = CancellationTokenUtils.CreateLinkedToken(cancellationToken, connection.ConnectionAborted, out var linkedToken); diff --git a/src/SignalR/server/SignalR/test/HubConnectionHandlerTests.ClientResult.cs b/src/SignalR/server/SignalR/test/HubConnectionHandlerTests.ClientResult.cs index 3b30eb6f6b10..da5078458fa2 100644 --- a/src/SignalR/server/SignalR/test/HubConnectionHandlerTests.ClientResult.cs +++ b/src/SignalR/server/SignalR/test/HubConnectionHandlerTests.ClientResult.cs @@ -453,11 +453,17 @@ public async Task ClientResultInUploadStreamingMethodWorks() { var connectionHandlerTask = await client.ConnectAsync(connectionHandler).DefaultTimeout(); - var invocationId = await client.BeginUploadStreamAsync("1", nameof(MethodHub.GetClientResultWithStream), new[] { "id" }, Array.Empty()).DefaultTimeout(); + // Regression test: Use 1 as the stream ID as this is the first ID the server would use for invocation IDs it generates + // We want to make sure the client result completion doesn't accidentally complete the stream + var streamId = "1"; + var invocationId = await client.BeginUploadStreamAsync("1", nameof(MethodHub.GetClientResultWithStream), new[] { streamId }, Array.Empty()).DefaultTimeout(); // Hub asks client for a result, this is an invocation message with an ID var invocationMessage = Assert.IsType(await client.ReadAsync().DefaultTimeout()); Assert.NotNull(invocationMessage.InvocationId); + // This check isn't really needed except we want to make sure the regression test mentioned above is still testing the expected scenario + Assert.Equal("s1", invocationMessage.InvocationId); + var res = 4 + ((long)invocationMessage.Arguments[0]); await client.SendHubMessageAsync(CompletionMessage.WithResult(invocationMessage.InvocationId, res)).DefaultTimeout(); diff --git a/src/submodules/googletest b/src/submodules/googletest index 71140c3ca7a8..d9251171f5a4 160000 --- a/src/submodules/googletest +++ b/src/submodules/googletest @@ -1 +1 @@ -Subproject commit 71140c3ca7a87bb1b5b9c9f1500fea8858cce344 +Subproject commit d9251171f5a42eaf993395e7ef127546af5814b0