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

时间:2019-05-14 23:16:56

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

因此,我可以获得构建详细信息,但其中不包含有关构建作业的任何信息。例如。每个构建作业都在构建代理上运行-我如何使用REST Api来获得这一内容?

我们正在谈论的是vNext版本,而不是XAML。

2 个答案:

答案 0 :(得分:1)

您可以在时间轴记录Timeline - Get中找到所有任务和作业。您可以将此浏览器粘贴到浏览器中,以检查特定版本的结果:

https://dev.azure.com/ {organization} / {project} / _ apis / build / builds / {buildId} /时间轴

我使用Microsoft.TeamFoundationServer.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.TFRestApiAppQueueBuild/TFRestApiApp/Program.cs

答案 1 :(得分:0)

https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}将使您知道在对象queue下使用的代理,并在其中显示代理队列(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中找到的名称过滤id来查找代理name

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的更多信息: