![](/img/trans.png)
[英]Skip stage with manual approval in Azure DevOps Pipelines (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 可以获取定义的构建状态,可选择范围为特定分支、阶段、作业和配置。
更新第二种方式:
您可以在浏览器中按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.