在本地使用 PowerShell 获取分支上的 Azure DevOps 上次构建 ID
Posted
技术标签:
【中文标题】在本地使用 PowerShell 获取分支上的 Azure DevOps 上次构建 ID【英文标题】:Use PowerShell locally to get Azure DevOps last build id on branch 【发布时间】:2020-03-22 12:04:55 【问题描述】:出于开发目的,我们需要通过 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 的登录页面,而不是我的存储库。如果我在浏览器中粘贴相同的网址,但我确实得到了好的页面。
我想通过请求传递了某种 cookie / AD 凭据,但我没有通过开发人员工具看到任何相关信息。
我尝试像这样手动设置 WebClient 对象的凭据:
#$creds = Get-Credential -UserName "User" -Message "Login"
#$WebClient.Credentials = $creds
#$WebClient.UseDefaultCredentials = $true
但无济于事。我错过了什么?
【问题讨论】:
【参考方案1】:我使用Invoke-RestMethod
获取Azure DevOps Rest API 响应,您需要使用Personal Access Token 进行身份验证:
$token = "YOUR-PAT"
$base64Auth = [Convert]::ToBase64String([Text.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
【讨论】:
首先感谢您的回答。如果有人在代码中挣扎:那里有一些小错别字,这就是它的运行方式:$token = "YOUR-PAT"
$base64Auth = [Convert]::ToBase64String([Text.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
很抱歉格式错误,在 cmets 中似乎无法使用多行代码。以上是关于在本地使用 PowerShell 获取分支上的 Azure DevOps 上次构建 ID的主要内容,如果未能解决你的问题,请参考以下文章