通过 Pull Request 获取 AzureDevops 构建详细信息

问题描述 投票:0回答:3

我的要求是告诉用户他/她的PR是否部署成功 所以我想,

  1. 我可以向用户询问他的 PR#
  2. 使用 PR# - 获取构建详细信息
  3. 使用步骤 2 中的 BuildID,查找部署信息

我卡在第2步了 我正在使用下面的文档来获取构建详细信息。 https://learn.microsoft.com/en-us/rest/api/azure/devops/build/builds/list?view=azure-devops-rest-6.0

无法找到reasonFilter参数的正确用法来传递拉取请求ID以获取构建详细信息 API URL Info

Build Reson

有人可以帮助这里如何准确使用reasonFilter参数 尝试过这个 _apis/build/builds?api-version=5.1&$top=1&reasonFilter=pullrequest=20056

azure-devops pull-request
3个回答
1
投票

关于您所坚持的一点:

reasonFilter
只是您可以选择的一些预定义字符串值。例如,如果您指定
reasonFilter=pullrequest
,您将通过拉取请求启动所有构建。因此,您无法在此处指定确切的 PR ID。

关于您的一般要求:我认为没有 API 可以严格绑定 PR ID 及其构建。您应该改为查看 Status API。构建只是与拉取请求相关联的状态之一,或者更具体地说,与提交相关联的状态之一。

因此,我将按照以下方式完成您的任务(请注意,这不是一个精确的算法,而是我尝试找到解决方案的一些步骤):

  • 通过用户提供的PR ID获取拉取请求
  • 在回复中找到
    lastMergeCommit
  • 获取该合并提交的状态
  • 调查返回的
    GitStatus
    对象集合
    并找出如何过滤您正在寻找的构建(我不确定该响应的格式,但我相信有一些属性可以判断通过)

希望这能引导您走向正确的方向。


0
投票

这里到底如何使用reasonFilter参数尝试了这个_apis/build/builds?api-version=5.1&$top=1&reasonFilter=pullrequest=20056

根据您的需求,您需要通过构建原因和拉取请求 ID 来过滤构建。

恐怕 Rest API 中没有现成的参数可以通过拉取请求 ID 进行过滤。

要解决此问题,您可以尝试将标签添加到您的构建中。

步骤如下:

  1. 您可以在构建中添加一个步骤,以使用拉取请求 ID 作为构建标签。请参阅此文档:AddBuildTag:向构建添加标签

例如:

- powershell: |
  
   
   Write-Host "##vso[build.addbuildtag]$env:SYSTEM_PULLREQUEST_PULLREQUESTID"
   
  displayName: 'PowerShell Script'
  condition: eq(variables['Build.reason'], 'pullrequest')

您可以设置条件以确保当管道被拉取请求触发时,它将添加构建标签。

  1. 您可以在Rest API中添加
    tagFilters
    来过滤相关构建。

例如:

Get https://dev.azure.com/org/project/_apis/build/builds?reasonFilter=pullrequest&tagFilters=PullrequestID&api-version=6.0

0
投票

我使用了

branchName
URI 参数,因为拉取请求每次都会创建一个内部合并分支。

分支在构建的

sourceBranch
属性中可见,看起来像“refs/pull/10797/merge”。如果您知道拉取请求 ID,则可以轻松确定合并分支名称并通过它进行过滤。

© www.soinside.com 2019 - 2024. All rights reserved.