diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3500b2b6064c46..1bc4fafd5afdcc 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -93,87 +93,87 @@ - + https://github.com/dotnet/arcade - c11157d174c111c4ab316dc60ff53311e410ef97 + d23725174e27de790e188bbce48fc190c569da5b - + https://github.com/dotnet/arcade - c11157d174c111c4ab316dc60ff53311e410ef97 + d23725174e27de790e188bbce48fc190c569da5b - + https://github.com/dotnet/arcade - c11157d174c111c4ab316dc60ff53311e410ef97 + d23725174e27de790e188bbce48fc190c569da5b - + https://github.com/dotnet/arcade - c11157d174c111c4ab316dc60ff53311e410ef97 + d23725174e27de790e188bbce48fc190c569da5b - + https://github.com/dotnet/arcade - c11157d174c111c4ab316dc60ff53311e410ef97 + d23725174e27de790e188bbce48fc190c569da5b - + https://github.com/dotnet/arcade - c11157d174c111c4ab316dc60ff53311e410ef97 + d23725174e27de790e188bbce48fc190c569da5b - + https://github.com/dotnet/arcade - c11157d174c111c4ab316dc60ff53311e410ef97 + d23725174e27de790e188bbce48fc190c569da5b - + https://github.com/dotnet/arcade - c11157d174c111c4ab316dc60ff53311e410ef97 + d23725174e27de790e188bbce48fc190c569da5b - + https://github.com/dotnet/arcade - c11157d174c111c4ab316dc60ff53311e410ef97 + d23725174e27de790e188bbce48fc190c569da5b - + https://github.com/dotnet/arcade - c11157d174c111c4ab316dc60ff53311e410ef97 + d23725174e27de790e188bbce48fc190c569da5b - + https://github.com/dotnet/arcade - c11157d174c111c4ab316dc60ff53311e410ef97 + d23725174e27de790e188bbce48fc190c569da5b - + https://github.com/dotnet/arcade - c11157d174c111c4ab316dc60ff53311e410ef97 + d23725174e27de790e188bbce48fc190c569da5b - + https://github.com/dotnet/arcade - c11157d174c111c4ab316dc60ff53311e410ef97 + d23725174e27de790e188bbce48fc190c569da5b - + https://github.com/dotnet/arcade - c11157d174c111c4ab316dc60ff53311e410ef97 + d23725174e27de790e188bbce48fc190c569da5b - + https://github.com/dotnet/arcade - c11157d174c111c4ab316dc60ff53311e410ef97 + d23725174e27de790e188bbce48fc190c569da5b - + https://github.com/dotnet/arcade - c11157d174c111c4ab316dc60ff53311e410ef97 + d23725174e27de790e188bbce48fc190c569da5b - + https://github.com/dotnet/arcade - c11157d174c111c4ab316dc60ff53311e410ef97 + d23725174e27de790e188bbce48fc190c569da5b - + https://github.com/dotnet/arcade - c11157d174c111c4ab316dc60ff53311e410ef97 + d23725174e27de790e188bbce48fc190c569da5b - + https://github.com/dotnet/arcade - c11157d174c111c4ab316dc60ff53311e410ef97 + d23725174e27de790e188bbce48fc190c569da5b - + https://github.com/dotnet/arcade - c11157d174c111c4ab316dc60ff53311e410ef97 + d23725174e27de790e188bbce48fc190c569da5b https://github.com/dotnet/runtime-assets @@ -333,9 +333,9 @@ https://github.com/dotnet/xharness 8dd9b8e6004e22c7b120af0631f0809865ff2088 - + https://github.com/dotnet/arcade - c11157d174c111c4ab316dc60ff53311e410ef97 + d23725174e27de790e188bbce48fc190c569da5b https://dev.azure.com/dnceng/internal/_git/dotnet-optimization diff --git a/eng/Versions.props b/eng/Versions.props index 1b7f6a44f00a5d..eebf2215e54b96 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -84,22 +84,22 @@ 9.0.109 - 9.0.0-beta.26458.10 - 9.0.0-beta.26458.10 - 9.0.0-beta.26458.10 - 9.0.0-beta.26458.10 - 2.9.0-beta.26458.10 - 9.0.0-beta.26458.10 - 2.9.0-beta.26458.10 - 9.0.0-beta.26458.10 - 9.0.0-beta.26458.10 - 9.0.0-beta.26458.10 - 9.0.0-beta.26458.10 - 9.0.0-beta.26458.10 - 9.0.0-beta.26458.10 - 9.0.0-beta.26458.10 - 9.0.0-beta.26458.10 - 9.0.0-beta.26458.10 + 9.0.0-beta.26468.4 + 9.0.0-beta.26468.4 + 9.0.0-beta.26468.4 + 9.0.0-beta.26468.4 + 2.9.0-beta.26468.4 + 9.0.0-beta.26468.4 + 2.9.0-beta.26468.4 + 9.0.0-beta.26468.4 + 9.0.0-beta.26468.4 + 9.0.0-beta.26468.4 + 9.0.0-beta.26468.4 + 9.0.0-beta.26468.4 + 9.0.0-beta.26468.4 + 9.0.0-beta.26468.4 + 9.0.0-beta.26468.4 + 9.0.0-beta.26468.4 1.4.0 diff --git a/eng/common/core-templates/job/job.yml b/eng/common/core-templates/job/job.yml index 8da43d3b5837a1..b0020eb392f43e 100644 --- a/eng/common/core-templates/job/job.yml +++ b/eng/common/core-templates/job/job.yml @@ -112,7 +112,8 @@ jobs: - name: ${{ pair.key }} value: ${{ pair.value }} - # DotNet-HelixApi-Access provides 'HelixApiAccessToken' for internal builds + # DotNet-HelixApi-Access provides 'HelixApiAccessToken' for internal builds. + # Entra-enabled Helix templates do not forward this value to their processes. - ${{ if and(eq(parameters.enableTelemetry, 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - group: DotNet-HelixApi-Access diff --git a/eng/common/core-templates/steps/send-to-helix.yml b/eng/common/core-templates/steps/send-to-helix.yml index 68fa739c4ab215..49e59b13f8ecfa 100644 --- a/eng/common/core-templates/steps/send-to-helix.yml +++ b/eng/common/core-templates/steps/send-to-helix.yml @@ -4,7 +4,9 @@ parameters: HelixType: 'tests/default/' # required -- Helix telemetry which identifies what type of data this is; should include "test" for clarity and must end in '/' HelixBuild: $(Build.BuildNumber) # required -- the build number Helix will use to identify this -- automatically set to the AzDO build number HelixTargetQueues: '' # required -- semicolon-delimited list of Helix queues to test on; see https://helix.dot.net/ for a list of queues - HelixAccessToken: '' # required -- access token to make Helix API requests; should be provided by the appropriate variable group + HelixAccessToken: '' # optional -- legacy access token; not forwarded when HelixUseEntraAuthentication is true + HelixUseEntraAuthentication: false # optional -- use refreshable Entra authentication instead of a PAT or anonymous access + HelixAzureSubscription: '' # required when HelixUseEntraAuthentication is true -- Azure service connection ID authorized for Helix HelixProjectPath: 'eng/common/helixpublish.proj' # optional -- path to the project file to build relative to BUILD_SOURCESDIRECTORY HelixProjectArguments: '' # optional -- arguments passed to the build command HelixConfiguration: '' # optional -- additional property attached to a job @@ -31,7 +33,31 @@ parameters: continueOnError: false # optional -- determines whether to continue the build if the step errors; defaults to false steps: - - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY/${{ parameters.HelixProjectPath }} /restore /p:TreatWarningsAsErrors=false ${{ parameters.HelixProjectArguments }} /t:Test /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"' + - ${{ if and(eq(parameters.HelixUseEntraAuthentication, true), eq(parameters.HelixAzureSubscription, '')) }}: + - pwsh: throw "HelixAzureSubscription must be set when HelixUseEntraAuthentication is true." + displayName: Validate Helix Entra authentication + condition: ${{ parameters.condition }} + + - ${{ if eq(parameters.HelixUseEntraAuthentication, true) }}: + - task: AzureCLI@2 + displayName: Read Helix Entra service connection + inputs: + azureSubscription: ${{ parameters.HelixAzureSubscription }} + addSpnToEnvironment: true + scriptType: pscore + scriptLocation: inlineScript + inlineScript: | + if ([string]::IsNullOrWhiteSpace($env:servicePrincipalId) -or [string]::IsNullOrWhiteSpace($env:tenantId)) { + throw "The Helix Azure service connection did not provide a service principal or tenant ID." + } + + # The SDK uses these values with System.AccessToken and System.OidcRequestUri + # to construct AzurePipelinesCredential in the subsequent MSBuild process. + Write-Host "##vso[task.setvariable variable=HelixEntraClientId]$env:servicePrincipalId" + Write-Host "##vso[task.setvariable variable=HelixEntraTenantId]$env:tenantId" + condition: ${{ parameters.condition }} + + - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY/${{ parameters.HelixProjectPath }} /restore /p:TreatWarningsAsErrors=false /p:HelixUseEntraAuthentication=${{ parameters.HelixUseEntraAuthentication }} ${{ parameters.HelixProjectArguments }} /t:Test /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"' displayName: ${{ parameters.DisplayNamePrefix }} (Windows) env: BuildConfig: $(_BuildConfig) @@ -40,7 +66,12 @@ steps: HelixBuild: ${{ parameters.HelixBuild }} HelixConfiguration: ${{ parameters.HelixConfiguration }} HelixTargetQueues: ${{ parameters.HelixTargetQueues }} - HelixAccessToken: ${{ parameters.HelixAccessToken }} + ${{ if eq(parameters.HelixUseEntraAuthentication, false) }}: + HelixAccessToken: ${{ parameters.HelixAccessToken }} + ${{ if eq(parameters.HelixUseEntraAuthentication, true) }}: + AZURESUBSCRIPTION_CLIENT_ID: $(HelixEntraClientId) + AZURESUBSCRIPTION_TENANT_ID: $(HelixEntraTenantId) + AZURESUBSCRIPTION_SERVICE_CONNECTION_ID: ${{ parameters.HelixAzureSubscription }} HelixPreCommands: ${{ parameters.HelixPreCommands }} HelixPostCommands: ${{ parameters.HelixPostCommands }} WorkItemDirectory: ${{ parameters.WorkItemDirectory }} @@ -61,7 +92,7 @@ steps: SYSTEM_ACCESSTOKEN: $(System.AccessToken) condition: and(${{ parameters.condition }}, eq(variables['Agent.Os'], 'Windows_NT')) continueOnError: ${{ parameters.continueOnError }} - - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/${{ parameters.HelixProjectPath }} /restore /p:TreatWarningsAsErrors=false ${{ parameters.HelixProjectArguments }} /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog + - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/${{ parameters.HelixProjectPath }} /restore /p:TreatWarningsAsErrors=false /p:HelixUseEntraAuthentication=${{ parameters.HelixUseEntraAuthentication }} ${{ parameters.HelixProjectArguments }} /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog displayName: ${{ parameters.DisplayNamePrefix }} (Unix) env: BuildConfig: $(_BuildConfig) @@ -70,7 +101,12 @@ steps: HelixBuild: ${{ parameters.HelixBuild }} HelixConfiguration: ${{ parameters.HelixConfiguration }} HelixTargetQueues: ${{ parameters.HelixTargetQueues }} - HelixAccessToken: ${{ parameters.HelixAccessToken }} + ${{ if eq(parameters.HelixUseEntraAuthentication, false) }}: + HelixAccessToken: ${{ parameters.HelixAccessToken }} + ${{ if eq(parameters.HelixUseEntraAuthentication, true) }}: + AZURESUBSCRIPTION_CLIENT_ID: $(HelixEntraClientId) + AZURESUBSCRIPTION_TENANT_ID: $(HelixEntraTenantId) + AZURESUBSCRIPTION_SERVICE_CONNECTION_ID: ${{ parameters.HelixAzureSubscription }} HelixPreCommands: ${{ parameters.HelixPreCommands }} HelixPostCommands: ${{ parameters.HelixPostCommands }} WorkItemDirectory: ${{ parameters.WorkItemDirectory }} diff --git a/global.json b/global.json index fc0abba4c41317..b281c55c000283 100644 --- a/global.json +++ b/global.json @@ -1,16 +1,16 @@ { "sdk": { - "version": "9.0.116", + "version": "9.0.121", "allowPrerelease": true, "rollForward": "major" }, "tools": { - "dotnet": "9.0.116" + "dotnet": "9.0.121" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26458.10", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.26458.10", - "Microsoft.DotNet.SharedFramework.Sdk": "9.0.0-beta.26458.10", + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26468.4", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.26468.4", + "Microsoft.DotNet.SharedFramework.Sdk": "9.0.0-beta.26468.4", "Microsoft.Build.NoTargets": "3.7.0", "Microsoft.Build.Traversal": "3.4.0", "Microsoft.NET.Sdk.IL": "9.0.0-rtm.24511.16"