如何使用Azure DevOps REST API获得构建作业



因此,我可以获取构建详细信息,但它不包含有关构建作业的任何信息。例如。每个构建作业都在构建代理上运行 - 如何使用REST API获得此作品?

我们是在谈论vnext构建,而不是xaml。

您可以在时间表记录中找到所有任务和作业:时间表 - 获取。您可以粘贴到浏览器此模板中以检查特定构建的结果:

https://dev.azure.com/{agrompand}/{project}/_apis/build/builds/builds/{buildid}/timeline

我使用microsoft.team -foundationserver.client软件包,这是它的示例:

    static void PrintTimeLine(string TeamProjectName, int BuildId)
    {
        var timeline = BuildClient.GetBuildTimelineAsync(TeamProjectName, BuildId).Result;
        if (timeline.Records.Count > 0)
        {
            Console.WriteLine("Task Name-----------------------------Start Time---Finish Time---Result");
            foreach(var record in timeline.Records)
                if (record.RecordType == "Task")
                Console.WriteLine("{0, -35} | {1, -10} | {2, -10} | {3}",
                    (record.Name.Length < 35) ? record.Name : record.Name.Substring(0, 35), 
                    (record.StartTime.HasValue) ? record.StartTime.Value.ToLongTimeString() : "",
                    (record.FinishTime.HasValue) ? record.FinishTime.Value.ToLongTimeString() : "",
                    (record.Result.HasValue) ? record.Result.Value.ToString() : "");
        }
    }

https://github.com/ashamrai/tfrestapi/blob/master/19.tfrestapiappquebuild/tfrestapiapp/progm.cs

https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}将使您知道对象queue下使用的代理,并在那里显示代理队列(91(编号(91(和池ID(8(

"queue":{  
      "id":91,
      "name":"MotBuild-Default",
      "pool":{  
         "id":8,
         "name":"MotBuild-Default"
      }

使用

https://dev.azure.com/{org}/_apis/distributedtask/pools/{pool_id}?api-version=5.0-preview.1https://dev.azure.com/{org}/{project}/_apis/distributedtask/queues/{queue_id}将返回池。

因此,现在使用https://dev.azure.com/{org}/_apis/distributedtask/pools/{pool_id}/agents将返回代理池下的代理列表

现在,我已经解释了所有的东西,让我们尝试将所有内容绑在一起。

1(使用https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}并找到队列和池ID。

2(使用https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}/timeline并找到类型Job的记录和属性workerName,该记录将返回所使用的代理名称。

3(用https://dev.azure.com/{org}/_apis/distributedtask/pools/{pool_id}/agents查询代理,并通过从上面步骤2中的名称中过滤name查找代理id

4(终于查询https://dev.azure.com/{org}/_apis/distributedtask/pools/{pool_id}/agents/{agent_id}将返回代理的高级信息,而不是太多信息。

下一个API无证件

5(要获取详细的功能查询https://dev.azure.com/{org}/_apis/distributedtask/pools/{pool_id}/agents/{agent_id}?includeCapabilities=true,将返回一个巨大的结果集!我认为这就是您想要的。

阅读有关API的更多信息:

  • 队列
  • 代理

最新更新