【问题标题】:How to get the build jobs using Azure DevOps REST APi?如何使用 Azure DevOps REST APi 获取构建作业?
【发布时间】:2019-05-14 23:16:56
【问题描述】:

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

我们谈论的是 vNext 构建,而不是 XAML。

【问题讨论】:

  • 投票结束是因为...?

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


【解决方案1】:

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

https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}/timeline

我使用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

【讨论】:

  • 它是否让您知道用于特定构建作业的构建代理?
  • 每条记录都包含workerName成员。也许对你有用。
【解决方案2】:

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.1 或 https://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 的更多信息:

【讨论】:

    猜你喜欢
    • 2019-10-14
    • 2021-07-07
    • 1970-01-01
    • 2023-03-14
    • 2021-10-20
    • 2021-04-20
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多