From df0b24f6478f209601f07843449bb603429ab2f8 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Mon, 24 Aug 2026 05:04:31 +0000 Subject: [PATCH 1/4] Update dependencies from https://github.com/dotnet/arcade build 20260823.5 On relative base path root Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.XliffTasks From Version 9.0.0-beta.26411.5 -> To Version 9.0.0-beta.26423.5 --- eng/Version.Details.xml | 12 +++++----- eng/common/core-templates/job/onelocbuild.yml | 22 +++++++++++-------- eng/common/sdl/packages.config | 2 +- global.json | 2 +- 4 files changed, 21 insertions(+), 17 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 4ba0bd8d65..89d918c6ff 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -27,18 +27,18 @@ - + https://github.com/dotnet/arcade - 43f11677d894d27b41fce39c496836c8207f3b8d + d9d97de241d6e2bc5cce12d9e7f54e8d19ca67dc - + https://github.com/dotnet/arcade - 43f11677d894d27b41fce39c496836c8207f3b8d + d9d97de241d6e2bc5cce12d9e7f54e8d19ca67dc - + https://github.com/dotnet/arcade - 43f11677d894d27b41fce39c496836c8207f3b8d + d9d97de241d6e2bc5cce12d9e7f54e8d19ca67dc diff --git a/eng/common/core-templates/job/onelocbuild.yml b/eng/common/core-templates/job/onelocbuild.yml index d76ed063ff..0dd3c8dd23 100644 --- a/eng/common/core-templates/job/onelocbuild.yml +++ b/eng/common/core-templates/job/onelocbuild.yml @@ -14,10 +14,11 @@ parameters: # exist, and any pipeline that sets this to '' fall back to PAT-based auth via the CeapexPat parameter. CeapexServiceConnection: 'dnceng-onelocbuild-ceapex' - # GitHub App authentication for the OneLoc check-in PR (dnceng/internal only). - # The infrastructure identifiers are centralized here and the App path is enabled by default. - # DevDiv requires its own project-scoped service connection before this path can be enabled there. + # GitHub App authentication for the OneLoc check-in PR. + # dnceng/internal and DevDiv/DevDiv are enabled by default with their project-scoped service + # connections. Other projects must explicitly opt in after provisioning equivalent infrastructure. UseGitHubAppAuthentication: true + UseGitHubAppAuthenticationInOtherProjects: false GitHubAppServiceConnection: 'dnceng-oneloc-githubapp' GitHubAppClientId: 'Iv23lijBU8x3gc9lDOc9' GitHubAppKeyVaultName: 'EngKeyVault' @@ -98,13 +99,16 @@ jobs: outputVariableName: 'CeapexEntraToken' condition: ${{ parameters.condition }} - # Mint a short-lived GitHub App installation token for the loc check-in PR (dnceng/internal only). - # All other projects fall back to PAT-based auth, since the app service connection is scoped to dnceng/internal. - - ${{ if and(eq(parameters.RepoType, 'gitHub'), eq(parameters.UseGitHubAppAuthentication, true), eq(variables['System.TeamProject'], 'internal')) }}: + # Mint a short-lived GitHub App installation token for the loc check-in PR. Use the connection + # provisioned in each supported project; other projects must explicitly opt in and override it. + - ${{ if and(eq(parameters.RepoType, 'gitHub'), eq(parameters.UseGitHubAppAuthentication, true), or(eq(variables['System.TeamProject'], 'internal'), eq(variables['System.TeamProject'], 'DevDiv'), eq(parameters.UseGitHubAppAuthenticationInOtherProjects, true))) }}: - template: /eng/common/core-templates/steps/get-github-app-token.yml parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} - azureSubscription: ${{ parameters.GitHubAppServiceConnection }} + ${{ if and(eq(variables['System.TeamProject'], 'DevDiv'), eq(parameters.GitHubAppServiceConnection, 'dnceng-oneloc-githubapp')) }}: + azureSubscription: 'devdiv-oneloc-githubapp' + ${{ else }}: + azureSubscription: ${{ parameters.GitHubAppServiceConnection }} keyVaultName: ${{ parameters.GitHubAppKeyVaultName }} keyName: ${{ parameters.GitHubAppKeyName }} appClientId: ${{ parameters.GitHubAppClientId }} @@ -134,9 +138,9 @@ jobs: patVariable: ${{ parameters.CeapexPat }} ${{ if eq(parameters.RepoType, 'gitHub') }}: repoType: ${{ parameters.RepoType }} - ${{ if and(eq(parameters.UseGitHubAppAuthentication, true), eq(variables['System.TeamProject'], 'internal')) }}: + ${{ if and(eq(parameters.UseGitHubAppAuthentication, true), or(eq(variables['System.TeamProject'], 'internal'), eq(variables['System.TeamProject'], 'DevDiv'), eq(parameters.UseGitHubAppAuthenticationInOtherProjects, true))) }}: gitHubPatVariable: "$(GitHubAppInstallationToken)" - ${{ if or(eq(parameters.UseGitHubAppAuthentication, false), ne(variables['System.TeamProject'], 'internal')) }}: + ${{ else }}: gitHubPatVariable: "${{ parameters.GithubPat }}" ${{ if ne(parameters.MirrorRepo, '') }}: isMirrorRepoSelected: true diff --git a/eng/common/sdl/packages.config b/eng/common/sdl/packages.config index 4585cfd6bb..e5f543ea68 100644 --- a/eng/common/sdl/packages.config +++ b/eng/common/sdl/packages.config @@ -1,4 +1,4 @@ - + diff --git a/global.json b/global.json index 2a5ff94906..83130ba899 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.26411.5", + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26423.5", "Microsoft.Build.NoTargets": "3.7.0" } } From 49a1568527f3d4cbc3c63d2f7daf9e692b6b0a46 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Mon, 31 Aug 2026 05:03:56 +0000 Subject: [PATCH 2/4] Update dependencies from https://github.com/dotnet/arcade build 20260829.3 On relative base path root Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.XliffTasks From Version 9.0.0-beta.26411.5 -> To Version 9.0.0-beta.26429.3 --- eng/Version.Details.xml | 12 ++++++------ eng/common/core-templates/job/onelocbuild.yml | 14 ++++++-------- global.json | 2 +- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 89d918c6ff..b9e9f549ca 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -27,18 +27,18 @@ - + https://github.com/dotnet/arcade - d9d97de241d6e2bc5cce12d9e7f54e8d19ca67dc + df7cbf719bdc6a2e6dfc229542a53bf28a8d5180 - + https://github.com/dotnet/arcade - d9d97de241d6e2bc5cce12d9e7f54e8d19ca67dc + df7cbf719bdc6a2e6dfc229542a53bf28a8d5180 - + https://github.com/dotnet/arcade - d9d97de241d6e2bc5cce12d9e7f54e8d19ca67dc + df7cbf719bdc6a2e6dfc229542a53bf28a8d5180 diff --git a/eng/common/core-templates/job/onelocbuild.yml b/eng/common/core-templates/job/onelocbuild.yml index 0dd3c8dd23..932fcef649 100644 --- a/eng/common/core-templates/job/onelocbuild.yml +++ b/eng/common/core-templates/job/onelocbuild.yml @@ -9,9 +9,8 @@ parameters: 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. + # dnceng/internal and DevDiv/DevDiv have same-named, project-scoped connections. Other projects, + # and any pipeline that sets this to '', fall back to PAT-based auth via the CeapexPat parameter. CeapexServiceConnection: 'dnceng-onelocbuild-ceapex' # GitHub App authentication for the OneLoc check-in PR. @@ -89,9 +88,8 @@ 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')) }}: + # Acquire an Entra token for ceapex feed access in the supported internal and DevDiv projects. + - ${{ if and(ne(parameters.CeapexServiceConnection, ''), or(eq(variables['System.TeamProject'], 'internal'), eq(variables['System.TeamProject'], 'DevDiv'))) }}: - template: /eng/common/core-templates/steps/get-federated-access-token.yml parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} @@ -132,9 +130,9 @@ jobs: ${{ if eq(parameters.RepoType, 'gitHub') }}: isShouldReusePrSelected: ${{ parameters.ReusePr }} packageSourceAuth: patAuth - ${{ if and(ne(parameters.CeapexServiceConnection, ''), eq(variables['System.TeamProject'], 'internal')) }}: + ${{ if and(ne(parameters.CeapexServiceConnection, ''), or(eq(variables['System.TeamProject'], 'internal'), eq(variables['System.TeamProject'], 'DevDiv'))) }}: patVariable: $(CeapexEntraToken) - ${{ if or(eq(parameters.CeapexServiceConnection, ''), ne(variables['System.TeamProject'], 'internal')) }}: + ${{ if or(eq(parameters.CeapexServiceConnection, ''), and(ne(variables['System.TeamProject'], 'internal'), ne(variables['System.TeamProject'], 'DevDiv'))) }}: patVariable: ${{ parameters.CeapexPat }} ${{ if eq(parameters.RepoType, 'gitHub') }}: repoType: ${{ parameters.RepoType }} diff --git a/global.json b/global.json index 83130ba899..37499f2afe 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.26423.5", + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26429.3", "Microsoft.Build.NoTargets": "3.7.0" } } From aeb0edd3fcc3d92d9f7f40afde6af61d46122f04 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Mon, 7 Sep 2026 05:03:30 +0000 Subject: [PATCH 3/4] Update dependencies from https://github.com/dotnet/arcade build 20260831.8 On relative base path root Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.XliffTasks From Version 9.0.0-beta.26411.5 -> To Version 9.0.0-beta.26431.8 --- eng/Version.Details.xml | 12 ++++++------ eng/common/Get-GitHubAppToken.ps1 | 13 +++++++------ global.json | 2 +- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index b9e9f549ca..192dbd56be 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -27,18 +27,18 @@ - + https://github.com/dotnet/arcade - df7cbf719bdc6a2e6dfc229542a53bf28a8d5180 + ee364d8268f86d6a2ab859f6cc82ca6f9d20b31c - + https://github.com/dotnet/arcade - df7cbf719bdc6a2e6dfc229542a53bf28a8d5180 + ee364d8268f86d6a2ab859f6cc82ca6f9d20b31c - + https://github.com/dotnet/arcade - df7cbf719bdc6a2e6dfc229542a53bf28a8d5180 + ee364d8268f86d6a2ab859f6cc82ca6f9d20b31c diff --git a/eng/common/Get-GitHubAppToken.ps1 b/eng/common/Get-GitHubAppToken.ps1 index 9c7e3dcd6a..ea776bd6bc 100644 --- a/eng/common/Get-GitHubAppToken.ps1 +++ b/eng/common/Get-GitHubAppToken.ps1 @@ -110,19 +110,20 @@ $headers = @{ Write-Host "Looking up installation for '$InstallationOwner'..." try { - $installations = @() + $installations = [System.Collections.Generic.List[object]]::new() $page = 1 do { - # Assign the response before wrapping it in @(). PowerShell otherwise - # preserves a top-level JSON array as one nested pipeline object. $pageResponse = Invoke-RestMethod ` -Uri "https://api.github.com/app/installations?per_page=100&page=$page" ` -Headers $headers ` -Method Get - $pageInstallations = @($pageResponse) - $installations += $pageInstallations + $pageInstallationCount = 0 + foreach ($installation in $pageResponse) { + $installations.Add($installation) + $pageInstallationCount++ + } $page++ - } while ($pageInstallations.Count -eq 100) + } while ($pageInstallationCount -eq 100) } catch { Write-PipelineTelemetryError -Category 'Build' -Message "Failed to list GitHub App installations: $_. The signed JWT may be invalid or the App's Client ID ('$AppClientId') may be incorrect." diff --git a/global.json b/global.json index 37499f2afe..42b467b085 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.26429.3", + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26431.8", "Microsoft.Build.NoTargets": "3.7.0" } } From 1d0641f61d5225814fc58236aa7f5bcc0c08838c Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Mon, 14 Sep 2026 05:04:46 +0000 Subject: [PATCH 4/4] Update dependencies from https://github.com/dotnet/arcade build 20260908.10 On relative base path root Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.XliffTasks From Version 9.0.0-beta.26411.5 -> To Version 9.0.0-beta.26458.10 --- eng/Version.Details.xml | 12 ++--- eng/common/core-templates/job/onelocbuild.yml | 46 +++++++------------ global.json | 2 +- 3 files changed, 23 insertions(+), 37 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 192dbd56be..61b132d499 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -27,18 +27,18 @@ - + https://github.com/dotnet/arcade - ee364d8268f86d6a2ab859f6cc82ca6f9d20b31c + c11157d174c111c4ab316dc60ff53311e410ef97 - + https://github.com/dotnet/arcade - ee364d8268f86d6a2ab859f6cc82ca6f9d20b31c + c11157d174c111c4ab316dc60ff53311e410ef97 - + https://github.com/dotnet/arcade - ee364d8268f86d6a2ab859f6cc82ca6f9d20b31c + c11157d174c111c4ab316dc60ff53311e410ef97 diff --git a/eng/common/core-templates/job/onelocbuild.yml b/eng/common/core-templates/job/onelocbuild.yml index 932fcef649..ea590495fb 100644 --- a/eng/common/core-templates/job/onelocbuild.yml +++ b/eng/common/core-templates/job/onelocbuild.yml @@ -5,19 +5,10 @@ parameters: # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool pool: '' - 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). - # dnceng/internal and DevDiv/DevDiv have same-named, project-scoped connections. Other projects, - # and any pipeline that sets this to '', fall back to PAT-based auth via the CeapexPat parameter. + # Project-scoped WIF service connection for Ceapex feed authentication. CeapexServiceConnection: 'dnceng-onelocbuild-ceapex' # GitHub App authentication for the OneLoc check-in PR. - # dnceng/internal and DevDiv/DevDiv are enabled by default with their project-scoped service - # connections. Other projects must explicitly opt in after provisioning equivalent infrastructure. - UseGitHubAppAuthentication: true - UseGitHubAppAuthenticationInOtherProjects: false GitHubAppServiceConnection: 'dnceng-oneloc-githubapp' GitHubAppClientId: 'Iv23lijBU8x3gc9lDOc9' GitHubAppKeyVaultName: 'EngKeyVault' @@ -48,7 +39,6 @@ jobs: displayName: OneLocBuild${{ parameters.JobNameSuffix }} variables: - - group: OneLocBuildVariables # Contains the CeapexPat and GithubPat - name: _GenerateLocProjectArguments value: -SourcesDirectory ${{ parameters.SourcesDirectory }} -LanguageSet "${{ parameters.LanguageSet }}" @@ -79,6 +69,10 @@ jobs: steps: - ${{ if eq(parameters.is1ESPipeline, '') }}: - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error + - ${{ if notIn(variables['System.TeamProject'], 'internal', 'DevDiv') }}: + - 'OneLocBuild is supported only in dnceng/internal and DevDiv/DevDiv.': error + - ${{ if eq(parameters.CeapexServiceConnection, '') }}: + - 'CeapexServiceConnection must identify a WIF service connection.': error - ${{ if ne(parameters.SkipLocProjectJsonGeneration, 'true') }}: - task: Powershell@2 @@ -88,18 +82,16 @@ jobs: displayName: Generate LocProject.json condition: ${{ parameters.condition }} - # Acquire an Entra token for ceapex feed access in the supported internal and DevDiv projects. - - ${{ if and(ne(parameters.CeapexServiceConnection, ''), or(eq(variables['System.TeamProject'], 'internal'), eq(variables['System.TeamProject'], 'DevDiv'))) }}: - - template: /eng/common/core-templates/steps/get-federated-access-token.yml - parameters: - is1ESPipeline: ${{ parameters.is1ESPipeline }} - federatedServiceConnection: ${{ parameters.CeapexServiceConnection }} - outputVariableName: 'CeapexEntraToken' - condition: ${{ parameters.condition }} + # Acquire a short-lived Entra token for Ceapex feed access. + - template: /eng/common/core-templates/steps/get-federated-access-token.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + federatedServiceConnection: ${{ parameters.CeapexServiceConnection }} + outputVariableName: 'CeapexEntraToken' + condition: ${{ parameters.condition }} - # Mint a short-lived GitHub App installation token for the loc check-in PR. Use the connection - # provisioned in each supported project; other projects must explicitly opt in and override it. - - ${{ if and(eq(parameters.RepoType, 'gitHub'), eq(parameters.UseGitHubAppAuthentication, true), or(eq(variables['System.TeamProject'], 'internal'), eq(variables['System.TeamProject'], 'DevDiv'), eq(parameters.UseGitHubAppAuthenticationInOtherProjects, true))) }}: + # Mint a short-lived GitHub App installation token for the loc check-in PR. + - ${{ if eq(parameters.RepoType, 'gitHub') }}: - template: /eng/common/core-templates/steps/get-github-app-token.yml parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} @@ -130,16 +122,10 @@ jobs: ${{ if eq(parameters.RepoType, 'gitHub') }}: isShouldReusePrSelected: ${{ parameters.ReusePr }} packageSourceAuth: patAuth - ${{ if and(ne(parameters.CeapexServiceConnection, ''), or(eq(variables['System.TeamProject'], 'internal'), eq(variables['System.TeamProject'], 'DevDiv'))) }}: - patVariable: $(CeapexEntraToken) - ${{ if or(eq(parameters.CeapexServiceConnection, ''), and(ne(variables['System.TeamProject'], 'internal'), ne(variables['System.TeamProject'], 'DevDiv'))) }}: - patVariable: ${{ parameters.CeapexPat }} + patVariable: $(CeapexEntraToken) ${{ if eq(parameters.RepoType, 'gitHub') }}: repoType: ${{ parameters.RepoType }} - ${{ if and(eq(parameters.UseGitHubAppAuthentication, true), or(eq(variables['System.TeamProject'], 'internal'), eq(variables['System.TeamProject'], 'DevDiv'), eq(parameters.UseGitHubAppAuthenticationInOtherProjects, true))) }}: - gitHubPatVariable: "$(GitHubAppInstallationToken)" - ${{ else }}: - gitHubPatVariable: "${{ parameters.GithubPat }}" + gitHubPatVariable: "$(GitHubAppInstallationToken)" ${{ if ne(parameters.MirrorRepo, '') }}: isMirrorRepoSelected: true gitHubOrganization: ${{ parameters.GitHubOrg }} diff --git a/global.json b/global.json index 42b467b085..2c59a488e1 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.26431.8", + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26458.10", "Microsoft.Build.NoTargets": "3.7.0" } }