Как получить задания по сборке с помощью Azure DevOps REST APi? - PullRequest
0 голосов
/ 15 мая 2019

Итак, я могу получить сведения о сборке, но она не содержит никакой информации о заданиях на сборку.Например, каждое задание на сборку выполнялось на агенте сборки. Как получить этот фрагмент с помощью REST Api?

Мы говорим о сборке vNext, а не XAML.

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Вы можете найти все задачи и задания в записях временной шкалы: Хронология - Получить .Вы можете вставить в браузер этот шаблон, чтобы проверить результаты для конкретной сборки:

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

0 голосов
/ 16 мая 2019

https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId} сообщит вам об Агенте, используемом под объектом queue, и там он показывает номер очереди агента (91) и идентификатор пула (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} и найдите идентификаторы очереди и пула.

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 и найдите агента id, отфильтровав name по имени, найденному на шаге № 2 выше.

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 можно узнать по адресу:

...