我的要求是告诉用户他/她的PR是否部署成功 所以我想,
我卡在第2步了 我正在使用下面的文档来获取构建详细信息。 https://learn.microsoft.com/en-us/rest/api/azure/devops/build/builds/list?view=azure-devops-rest-6.0
无法找到reasonFilter参数的正确用法来传递拉取请求ID以获取构建详细信息
有人可以帮助这里如何准确使用reasonFilter参数 尝试过这个 _apis/build/builds?api-version=5.1&$top=1&reasonFilter=pullrequest=20056
关于您所坚持的一点:
reasonFilter
只是您可以选择的一些预定义字符串值。例如,如果您指定 reasonFilter=pullrequest
,您将通过拉取请求启动所有构建。因此,您无法在此处指定确切的 PR ID。
关于您的一般要求:我认为没有 API 可以严格绑定 PR ID 及其构建。您应该改为查看 Status API。构建只是与拉取请求相关联的状态之一,或者更具体地说,与提交相关联的状态之一。
因此,我将按照以下方式完成您的任务(请注意,这不是一个精确的算法,而是我尝试找到解决方案的一些步骤):
lastMergeCommit
GitStatus
对象集合并找出如何过滤您正在寻找的构建(我不确定该响应的格式,但我相信有一些属性可以判断通过)希望这能引导您走向正确的方向。
这里到底如何使用reasonFilter参数尝试了这个_apis/build/builds?api-version=5.1&$top=1&reasonFilter=pullrequest=20056
根据您的需求,您需要通过构建原因和拉取请求 ID 来过滤构建。
恐怕 Rest API 中没有现成的参数可以通过拉取请求 ID 进行过滤。
要解决此问题,您可以尝试将标签添加到您的构建中。
步骤如下:
例如:
- powershell: |
Write-Host "##vso[build.addbuildtag]$env:SYSTEM_PULLREQUEST_PULLREQUESTID"
displayName: 'PowerShell Script'
condition: eq(variables['Build.reason'], 'pullrequest')
您可以设置条件以确保当管道被拉取请求触发时,它将添加构建标签。
tagFilters
来过滤相关构建。例如:
Get https://dev.azure.com/org/project/_apis/build/builds?reasonFilter=pullrequest&tagFilters=PullrequestID&api-version=6.0
我使用了
branchName
URI 参数,因为拉取请求每次都会创建一个内部合并分支。
分支在构建的
sourceBranch
属性中可见,看起来像“refs/pull/10797/merge”。如果您知道拉取请求 ID,则可以轻松确定合并分支名称并通过它进行过滤。