【问题标题】:ADO API: Builds-List incomplete listADO API:构建列表不完整列表
【发布时间】:2021-04-17 21:51:46
【问题描述】:

我正在调用这个 API 方法: https://docs.microsoft.com/en-us/rest/api/azure/devops/build/builds/list?view=azure-devops-rest-6.0#response

我的 API 网址(带有占位符名称): https://dev.azure.com/MyOrgName/MyProjName/_apis/build/builds?api-version=6.1-preview.6

结果大多是合适的,除了我得到一个过滤的构建列表,我似乎无法获得我想要的所有构建。特别是,来自多个管道的构建完全丢失了,我找不到任何方法来包含它们。没有明显的原因为什么包含某些构建,而有些则不包含。

过滤器选项描述了我可以进一步减少它的方法,但这不是我的目标。我想检索我没有得到的构建。而且我不知道哪个选项我不知道哪个会让我得到我关心的结果。

【问题讨论】:

  • 当我进一步挖掘...我的每个管道都有数百个构建,而 Build-List 的最大回报为 1000。Sooo...也许过滤器是正确的答案。我需要过滤我的结果,以便每个查询得到少于 1000 个构建,否则它会被任意截断。经过几次测试后,如果我按特定管道过滤,例如通过“definitions=22”(未经过滤的查询中不存在的管道),我将获得预期的结果。实际上,这个评论现在就是答案。 .我觉得很愚蠢。
  • 嗨@PaulGilmore,我的回答中的解释和建议对您有帮助吗?如果您对此有任何疑问,请随时告诉我。

标签: azure-devops-rest-api


【解决方案1】:

正如您已经注意到的,每个 API 调用的响应正文中可以列出最大数量的对象。通常,如果您要列出的对象太多,它们将在多个页面中返回。

在每次调用的响应体中,一般都有一个参数'continuationToken'(见here)。您可以通过使用此参数调用 API 来访问下一个响应页面。

GET https://dev.azure.com/{organization}/{project}/_apis/build/builds?continuationToken={continuationToken}&api-version=6.1-preview.6

例如:

  • 第一次调用返回第一页的列表;

  • 然后使用第一次调用的响应中返回的参数“continuationToken”运行第二次调用以获取第二页;

  • 然后使用第二个响应中返回的“continuationToken”获取第三页;

    。 . .

  • 直到最后一页。

如果要遍历所有页面,可能需要循环调用API。

【讨论】:

  • 不错!我错过了 continuationToken,感谢您的建议!您的建议 100% 有用,但我仍然建议拨打电话的人也使用适当的过滤器来尝试减少结果总数。我个人使用 Pipelines-List,然后一次检索每个管道的结果。由于这组结果最终也可能会超过 1000,因此我认为日期是下一个最佳过滤器。最后,根据各个呼叫者的需求,以上所有组合是最佳答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多