Azure DevOps Server 2020.1.1 API - 如何获取包含运行它的代理的构建

Posted

技术标签:

【中文标题】Azure DevOps Server 2020.1.1 API - 如何获取包含运行它的代理的构建【英文标题】:Azure DevOps Server 2020.1.1 API - How to get a build including the agent it ran on 【发布时间】:2022-01-14 15:11:45 【问题描述】:

我正在使用 nuget 包 Microsoft.TeamFoundationServer.ClientBuildHttpClient 实例来获取我的构建。不幸的是,获取的 Build 类型的对象不包括用于运行构建的代理的名称或 ID。

属性Queue 仅包含有关已使用队列的信息,但不包含有关特定代理的信息。还有另一个属性AgentSpecification,但这似乎总是空的。

我可能会解析附加的构建日志,但这会很麻烦。

【问题讨论】:

【参考方案1】:

是的,这是个问题。但是,作为一种解决方法,您可以尝试从日志中提取该信息。小例子:

var logs = BuildClient.GetBuildLogsAsync(TeamProjectName, buildId).Result;

foreach(var log in logs)

    var lines = BuildClient.GetBuildLogLinesAsync(TeamProjectName, buildId, log.Id).Result;

    foreach (var line in lines)
        if (line.Contains("Agent")) Console.WriteLine(line);                    

结果:

【讨论】:

感谢您的帮助。我已经以这种方式实现了它,但后来我发现,一旦有人删除构建,日志就会消失。因为我想做一个每日“快照”,了解运行了多少、何时以及多长时间的构建,所以我采用了另一种方法。我发现,您可以通过 api 调用 (see here) 获取代理的所有工作请求。因为作业请求包含构建 ID,您可以引用它们。

以上是关于Azure DevOps Server 2020.1.1 API - 如何获取包含运行它的代理的构建的主要内容,如果未能解决你的问题,请参考以下文章

未找到 Azure DevOps Server 2019/2020 访问级别页面

Azure DevOps Server 2020.1.1 API - 如何获取包含运行它的代理的构建

如何在 Azure DevOps Server 2020 中为 C#10 / .NET 6.0 项目创建构建任务

Azure 实践- Azure Devops Server 安装

Azure DevOps Server:为啥当前版本的 ADS 需要针对先前版本的 ADS 的补丁?

如何在 azure devops server 2019 的新工作项 Web 布局中编程工作项水平选项卡?