diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 538416f95b..ec0a0b00f3 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -27,18 +27,18 @@
-
+
https://github.com/dotnet/arcade
- efce34e9f9f25af27e2b471fbbf8c21f1ac2e318
+ b1448f6afdd8d543e6452c293ce99c68c745b200
-
+
https://github.com/dotnet/arcade
- efce34e9f9f25af27e2b471fbbf8c21f1ac2e318
+ b1448f6afdd8d543e6452c293ce99c68c745b200
-
+
https://github.com/dotnet/arcade
- efce34e9f9f25af27e2b471fbbf8c21f1ac2e318
+ b1448f6afdd8d543e6452c293ce99c68c745b200
diff --git a/eng/common/core-templates/job/onelocbuild.yml b/eng/common/core-templates/job/onelocbuild.yml
index edefa789d3..79386ab086 100644
--- a/eng/common/core-templates/job/onelocbuild.yml
+++ b/eng/common/core-templates/job/onelocbuild.yml
@@ -8,6 +8,12 @@ parameters:
CeapexPat: $(dn-bot-ceapex-package-r) # PAT for the loc AzDO instance https://dev.azure.com/ceapex
GithubPat: $(BotAccount-dotnet-bot-repo-PAT)
+ # Service connection for WIF-based Entra authentication to ceapex feeds (replaces CeapexPat).
+ # When set, dnceng/internal builds acquire a federated Entra token instead of using a PAT.
+ # All other projects (e.g. DevDiv, public), where this dnceng-scoped service connection does not
+ # exist, and any pipeline that sets this to '' fall back to PAT-based auth via the CeapexPat parameter.
+ CeapexServiceConnection: 'dnceng-onelocbuild-ceapex'
+
SourcesDirectory: $(System.DefaultWorkingDirectory)
CreatePr: true
AutoCompletePr: false
@@ -73,6 +79,16 @@ jobs:
displayName: Generate LocProject.json
condition: ${{ parameters.condition }}
+ # Acquire an Entra token for ceapex feed access via WIF (dnceng/internal only).
+ # All other projects use PAT-based auth, since the ceapex service connection is scoped to dnceng/internal.
+ - ${{ if and(ne(parameters.CeapexServiceConnection, ''), eq(variables['System.TeamProject'], 'internal')) }}:
+ - template: /eng/common/core-templates/steps/get-federated-access-token.yml
+ parameters:
+ is1ESPipeline: ${{ parameters.is1ESPipeline }}
+ federatedServiceConnection: ${{ parameters.CeapexServiceConnection }}
+ outputVariableName: 'CeapexEntraToken'
+ condition: ${{ parameters.condition }}
+
- task: OneLocBuild@2
displayName: OneLocBuild
env:
@@ -89,7 +105,10 @@ jobs:
${{ if eq(parameters.RepoType, 'gitHub') }}:
isShouldReusePrSelected: ${{ parameters.ReusePr }}
packageSourceAuth: patAuth
- patVariable: ${{ parameters.CeapexPat }}
+ ${{ if and(ne(parameters.CeapexServiceConnection, ''), eq(variables['System.TeamProject'], 'internal')) }}:
+ patVariable: $(CeapexEntraToken)
+ ${{ if or(eq(parameters.CeapexServiceConnection, ''), ne(variables['System.TeamProject'], 'internal')) }}:
+ patVariable: ${{ parameters.CeapexPat }}
${{ if eq(parameters.RepoType, 'gitHub') }}:
repoType: ${{ parameters.RepoType }}
gitHubPatVariable: "${{ parameters.GithubPat }}"
diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1
index a06513a594..d89aa48781 100644
--- a/eng/common/tools.ps1
+++ b/eng/common/tools.ps1
@@ -727,7 +727,7 @@ function InitializeToolset() {
'' | Set-Content $proj
- MSBuild-Core $proj $bl /t:__WriteToolsetLocation /clp:ErrorsOnly`;NoSummary /p:__ToolsetLocationOutputFile=$toolsetLocationFile
+ MSBuild-Core $proj $bl /t:__WriteToolsetLocation /clp:ErrorsOnly`;NoSummary /p:__ToolsetLocationOutputFile=$toolsetLocationFile /p:RestoreIgnoreFailedSources=true
$path = Get-Content $toolsetLocationFile -Encoding UTF8 -TotalCount 1
if (!(Test-Path $path)) {
diff --git a/eng/common/tools.sh b/eng/common/tools.sh
index 01b09b6579..c412703d1b 100755
--- a/eng/common/tools.sh
+++ b/eng/common/tools.sh
@@ -410,7 +410,7 @@ function InitializeToolset {
fi
echo '' > "$proj"
- MSBuild-Core "$proj" $bl /t:__WriteToolsetLocation /clp:ErrorsOnly\;NoSummary /p:__ToolsetLocationOutputFile="$toolset_location_file"
+ MSBuild-Core "$proj" $bl /t:__WriteToolsetLocation /clp:ErrorsOnly\;NoSummary /p:__ToolsetLocationOutputFile="$toolset_location_file" /p:RestoreIgnoreFailedSources=true
local toolset_build_proj=`cat "$toolset_location_file"`
diff --git a/global.json b/global.json
index 4394726148..378fc77cec 100644
--- a/global.json
+++ b/global.json
@@ -3,7 +3,7 @@
"dotnet": "9.0.116"
},
"msbuild-sdks": {
- "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26301.4",
+ "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26366.5",
"Microsoft.Build.NoTargets": "3.7.0"
}
}