[英]Use PowerShell locally to get Azure DevOps last build id on branch
出於開發目的,我們需要通過 Visual Studio 在本地啟動一個 PowerShell 腳本,該腳本的任務是獲取特定分支的最后一個構建 ID。
到目前為止,我已經嘗試了很多基於此的選項:
$WebClient = New-Object Net.WebClient
Write-Host "Downloading patches and binaries"
Write-Host "Get ID"
$url = "https://oldrepo.visualstudio.com/ProjectA/_apis/build/latest/14?branchName=master"
$result = $WebClient.DownloadString($url)
Write-Host $result
但是result
值返回 azure 的登錄頁面而不是我的存儲庫。 但是,如果我在瀏覽器中粘貼相同的 url,我會得到好的頁面。
我想通過請求傳遞了某種 cookie / AD 憑據,但我沒有通過開發人員工具看到任何相關內容。
我嘗試像這樣手動將憑據設置為 WebClient object:
#$creds = Get-Credential -UserName "User" -Message "Login"
#$WebClient.Credentials = $creds
#$WebClient.UseDefaultCredentials = $true
但無濟於事。 我錯過了什么?
我使用Invoke-RestMethod
來獲取 Azure DevOps Rest API 響應,您需要使用Personal Access Token進行身份驗證:
$token = "YOUR-PAT"
$base64Auth = [Convert]::ToBase64String([Test.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "",$token)))
$header = "@{Authorization=("Basic {0}" -f $base64Auth)
$url = "https://oldrepo.visualstudio.com/ProjectA/_apis/build/latest/14?branchName=master"
$result = Invoke-RestMethod -Uri $url -Method Get -ContentType application/json -Headers $header
Shayki 的答案有效,但最新的 API 端點已在此處更改了更多詳細信息
請在下面找到更新的查詢
$token = "YOUR-PAT"
$base64Auth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "",$token)))
$header = @{Authorization=("Basic {0}" -f $base64Auth)}
$url = "GET https://dev.azure.com/{organization}/{project}/_apis/build/latest/{definition}?api-version=7.0-preview.1"
$result = Invoke-RestMethod -Uri $url -Method Get -ContentType application/json -Headers $header
$result.id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.