diff --git a/NuGet.config b/NuGet.config
index 1af36e4f89c..d1a8a417e43 100644
--- a/NuGet.config
+++ b/NuGet.config
@@ -4,7 +4,6 @@
-
@@ -21,7 +20,6 @@
-
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 9a098f97227..abaf3b3665b 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -67,17 +67,17 @@
-
+
https://github.com/dotnet/arcade
- f3bffca1f93573c88a7f9b79fac258dff76f6215
+ 43f11677d894d27b41fce39c496836c8207f3b8d
-
+
https://github.com/dotnet/arcade
- f3bffca1f93573c88a7f9b79fac258dff76f6215
+ 43f11677d894d27b41fce39c496836c8207f3b8d
-
+
https://github.com/dotnet/arcade
- f3bffca1f93573c88a7f9b79fac258dff76f6215
+ 43f11677d894d27b41fce39c496836c8207f3b8d
diff --git a/eng/Versions.props b/eng/Versions.props
index 5748ef45d22..8136c1b98e4 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -34,7 +34,7 @@
9.0.19
- 9.0.0-beta.26406.11
+ 9.0.0-beta.26411.5
17.8.43
diff --git a/eng/common/Get-GitHubAppToken.ps1 b/eng/common/Get-GitHubAppToken.ps1
index 6b5899d7a29..9c7e3dcd6ac 100644
--- a/eng/common/Get-GitHubAppToken.ps1
+++ b/eng/common/Get-GitHubAppToken.ps1
@@ -113,10 +113,13 @@ try {
$installations = @()
$page = 1
do {
- $pageInstallations = @(Invoke-RestMethod `
+ # 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)
+ -Method Get
+ $pageInstallations = @($pageResponse)
$installations += $pageInstallations
$page++
} while ($pageInstallations.Count -eq 100)
@@ -125,12 +128,19 @@ 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."
exit 1
}
-$installation = $installations | Where-Object { $_.account.login -ieq $InstallationOwner } | Select-Object -First 1
-if (-not $installation) {
+$matchingInstallations = @($installations | Where-Object { $_.account.login -ieq $InstallationOwner })
+if ($matchingInstallations.Count -eq 0) {
$found = ($installations | ForEach-Object { $_.account.login }) -join ', '
Write-PipelineTelemetryError -Category 'Build' -Message "No installation found for '$InstallationOwner'. App is installed on: $found"
exit 1
}
+if ($matchingInstallations.Count -ne 1) {
+ $matchingIds = ($matchingInstallations | ForEach-Object { $_.id }) -join ', '
+ Write-PipelineTelemetryError -Category 'Build' -Message "Found multiple installations for '$InstallationOwner': $matchingIds"
+ exit 1
+}
+$installation = $matchingInstallations[0]
+Write-Host "Using installation $($installation.id) for '$($installation.account.login)'."
try {
$tokenResponse = Invoke-RestMethod `
diff --git a/global.json b/global.json
index 9898a5f3009..de74e6bac56 100644
--- a/global.json
+++ b/global.json
@@ -13,7 +13,7 @@
}
},
"msbuild-sdks": {
- "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26406.11",
- "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.26406.11"
+ "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26411.5",
+ "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.26411.5"
}
}