在日志中获取批准发布的人员

时间:2019-08-29 13:33:20

标签: azure-devops

早上好,我需要在日志中得到批准该版本的人员,在用于下载所有日志的选项中,找不到该版本的批准,它仅显示在vsts界面中。对于审核,有必要将其保存在.log中,我已经看到可以通过调用api来完成任务,但是该方法是通过oauth2实现的,我需要了解如何获得该信息以及如何逐步会做到的。谢谢。

1 个答案:

答案 0 :(得分:1)

实际上,如果您想在管道任务中使用REST API,Azure Devops提供了另一种简便的方法,它等于Oauth 2.0Stystem.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被设置为可通过预定义变量自动实现,因此您无需在脚本中首先指定它。