diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml index 304610d0ed48..7e1f35d9ceb0 100644 --- a/.github/workflows/copilot-setup-steps.yml +++ b/.github/workflows/copilot-setup-steps.yml @@ -26,5 +26,7 @@ jobs: - name: Install azsdk mcp server shell: pwsh + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | ./eng/common/mcp/azure-sdk-mcp.ps1 -InstallDirectory $HOME/bin diff --git a/eng/common/scripts/Helpers/AzSdkTool-Helpers.ps1 b/eng/common/scripts/Helpers/AzSdkTool-Helpers.ps1 index 8d74ece07dd9..9f5806fec9c2 100644 --- a/eng/common/scripts/Helpers/AzSdkTool-Helpers.ps1 +++ b/eng/common/scripts/Helpers/AzSdkTool-Helpers.ps1 @@ -105,6 +105,35 @@ function isNewVersion( return $true } +function Get-GitHubApiHeaders { + # Use GitHub cli to get an auth token if available + if (Get-Command gh -ErrorAction SilentlyContinue) { + $token = gh auth token 2>$null + } + + # Get token from env if not available from gh cli + if (!$token) + { + Write-Host "Check for GITHUB_TOKEN environment variable." + $token = $env:GITHUB_TOKEN + } + + if ($token) + { + Write-Host "Using authenticated GitHub API requests." + $headers = @{ + Authorization = "Bearer $tokentest" + } + return $headers + } + + Write-Host "Using unauthenticated GitHub API requests." + $headers = @{ + Authorization = "Bearer testfail" + } + return $headers +} + <# .SYNOPSIS Installs a standalone version of an engsys tool. @@ -135,11 +164,12 @@ function Install-Standalone-Tool ( } $tag = "${Package}_${Version}" + $headers = Get-GitHubApiHeaders if (!$Version -or $Version -eq "*") { Write-Host "Attempting to find latest version for package '$Package'" $releasesUrl = "https://api.github.com/repos/$Repository/releases" - $releases = Invoke-RestMethod -Uri $releasesUrl + $releases = Invoke-RestMethod -Uri $releasesUrl -Headers $headers $found = $false foreach ($release in $releases) { if ($release.tag_name -like "$Package*") { @@ -163,7 +193,7 @@ function Install-Standalone-Tool ( if (isNewVersion $version $downloadFolder) { Write-Host "Installing '$Package' '$Version' to '$downloadFolder' from $downloadUrl" - Invoke-WebRequest -Uri $downloadUrl -OutFile $downloadLocation + Invoke-WebRequest -Uri $downloadUrl -OutFile $downloadLocation -Headers $headers if ($downloadFile -like "*.zip") { Expand-Archive -Path $downloadLocation -DestinationPath $downloadFolder -Force