繁体   English   中英

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

[英]How to get stage results from YAML pipelines in Azure DevOps

Until now, I am using the Azure DevOps REST Api to get the data from releases in Azure DevOps for reporting purpose. 显然,这将随着使用 CI/CD 的新方式而改变 --> YAML 和 Multi-Stage-Pipeline(当前预览版)。 在这种情况下,不推荐使用构建和发布策略,所有内容都被定义为管道并细分为分阶段(构建阶段、部署阶段 1、部署阶段 2,...)。
我尝试通过构建列表方法接收数据,但是这些数据是有限的,并且我缺少一些重要信息,例如“舞台是否成功”。

有人已经体验过 YAML 管道和 Azure DevOps REST Z72664DC1959F3B0CAF3078 有没有办法获取完整的数据(如经典发布策略)? 还是它目前正在开发中,我必须耐心等待?

提前致谢!

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

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

文档可以在这里找到。

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

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

姓名 类型 描述
时间线 ID 细绳 获取或设置拥有表示此尝试的记录的时间线标识符。

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

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

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

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

这是我对 postman 的测试: 在此处输入图像描述 在此处输入图像描述

更新第二种方式:

您可以在浏览器中按F12 ,然后按 select Network捕获请求以获取阶段结果。您可以从响应正文中捕获结果。 但是不同的阶段结果用不同的数字表示,即0->完成,5->取消等。

在此处输入图像描述 在此处输入图像描述

感谢您的提示,Joel 是对的,您将获得所有记录,因此您只需过滤 Stage 类型即可获得管道的所有阶段

如果您使用的是 C# 包装器,您可以使用此代码=>

var buildClient = connection.GetClient<BuildHttpClient>();
        var timeline = await buildClient.GetBuildTimelineAsync(project.Name, buildDef.LatestBuild.Id);
        var stageTimelines = timeline.Records.Where(record => record.RecordType == "Stage").ToList();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM