如何从 Azure DevOps 中的 YAML 管道获取阶段结果

How to get stage results from YAML pipelines in Azure DevOps

到目前为止,我使用 Azure DevOps REST Api 从 Azure DevOps 中的版本获取数据以用于报告目的。显然,这将随着如何使用 CI/CD --> YAML 和 Multi-Stage-Pipeline(当前预览)的新方式而改变。在那种情况下,构建和发布策略已被弃用,所有内容都被定义为管道并细分为分阶段(构建阶段、部署阶段 1、部署阶段 2,...)。
我尝试通过 build list method 接收数据,但此数据有限,我遗漏了一些重要信息,如 'was stage successful'。

是否有人已经体验过 YAML Pipelines 和 Azure DevOps REST 的组合 Api?有没有办法获取完整数据(与经典发布策略一样)?或者它目前正在开发中,我必须耐心等待?

提前致谢!

How to get stage results from YAML pipelines in Azure DevOps

对于这个问题,您需要使用Status - Get rest api。

GET https://dev.azure.com/{organization}/{project}/_apis/build/status/{definition}?api-version=5.1-preview.1

此 api 可以获取定义的构建状态,可以选择将范围限定为特定分支、阶段、作业和配置。

这是我对邮递员的测试:

更新第二种方式:

您可以在浏览器中按F12然后selectNetwork捕获请求获取阶段result.You可以从响应体中捕获结果。但不同阶段的结果由不同的数字表示,即 0->已完成,5->已取消等。

似乎时间线 API 正是为此而制作的。

GET https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}/timeline/{timelineId}?api-version=7.1-preview.2

可以找到文档 here

返回一个记录数组,其中包含每个阶段、阶段、作业、任务和检查点的状态。

至于 {timelineId},与默认示例相反,它不是必填字段,不提供会产生正确的结果。似乎它可能来自之前的尝试:

Name Type Description
timelineId string Gets or sets the timeline identifier which owns the record representing this attempt.