首页 > 解决方案 > 如何从 Azure DevOps Timelines REST API 确定作业依赖关系图

问题描述

我的团队已经构建了 YAML,它具有其他作业的多个dependsOn作业,但其他作业可以并行运行。我正在构建一个工具来分析我们的构建,我想要它做的一件事就是告诉我构建持续时间。在引入“重试失败的作业”之前,这是微不足道的(最后一个作业完成时间 - 第一个作业开始时间)。然而,现在简单的“最后一个工作完成 - 第一个工作开始”计算不是我关心的值,当一个工作失败,重试,然后成功。我正在尝试计算开发人员在合并 PR 之前需要等待的“挂钟时间”,并且正在将片状作为一个单独的问题进行跟踪。

使用 REST API,我可以使用builds 端点来获取所有 build where result == "succeeded" || result == "partiallySucceeded",并且可以使用时间线端点过滤​​时间线以获取 where 记录列表type == "job"

如果不硬编码我的构建的作业依赖顺序(因为它会随着时间而变化),我如何确定作业依赖是什么,所以我可以构建构建作业的甘特图,删除作业时构建未运行的时间被重试了?

例如,假设我的构建有 5 个作业:初始化、构建调试、构建发布、测试、签名。两个 Build 作业依赖于 Init,Test 依赖于 Build Debug,Sign 依赖于 Test 和 Build Release。我想要某种方式以编程方式确定作业依赖图。

标签: azure-devopsazure-pipelinesazure-devops-rest-api

解决方案


构建日志不包含作业依赖信息,恐怕您必须通过Items - Get REST API 获取 YAML 文件,并检查文件中的作业依赖。

GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/items?path={path}&versionDescriptor.version={branch}&api-version=6.1-preview.1

如果管道中有模板,您需要通过相同的 api 指定它们的路径来获取模板。


推荐阅读