簡體   English   中英

在本地使用 PowerShell 在分支上獲取 Azure DevOps last build id

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM