早上好,我需要在日志中得到批准该版本的人员,在用于下载所有日志的选项中,找不到该版本的批准,它仅显示在vsts界面中。对于审核,有必要将其保存在.log中,我已经看到可以通过调用api来完成任务,但是该方法是通过oauth2实现的,我需要了解如何获得该信息以及如何逐步会做到的。谢谢。
答案 0 :(得分:1)
实际上,如果您想在管道任务中使用REST API,Azure Devops提供了另一种简便的方法,它等于Oauth 2.0
:Stystem.AccessToken。
这是一个预定义的变量,带有安全令牌,在运行的构建过程中使用。在管道中使用此变量,您将不再需要Oauth 2.0
。有关如何使用它的方法是 System.AccessToken ,只需将其添加到称为脚本的API标头中即可:
$headers = @{
Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
注意:要使用此变量,必须首先在代理作业中启用Allow scripts to access the OAuth token
。
在REST API的文档中,我们提供了一个可以get a list of approvals的api。
GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/approvals?api-version=5.1
但是此api有一个缺点,它只能获得待审核批准的批准列表。这意味着,一旦批准完成(批准/拒绝),使用此api就不会再得到它。
正如您所说,您应该希望批准者显示在日志中,所以我建议您使用以下api:
GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}?api-version=5.1
它可以显示所有批准者,包括部署前,部署后。
$headers = @{
Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
$uri = "https://vsrm.dev.azure.com/{org name}/{project name}/_apis/release/releases/$(release.releaseId)?api-version=5.1"
$result =Invoke-RestMethod -Uri $uri -Method Get -Headers $headers
Write-Host "Pipeline = $($result| ConvertTo-Json -Depth 100)"
在此脚本中,release Id
被设置为可通过预定义变量自动实现,因此您无需在脚本中首先指定它。