2016-02-17 3 views
1

Я хотел бы проверить, как долго ожидания в строках ожидания в очереди ждут. Однако я не могу найти функцию API для получения этой информации.Как получить время очереди завершенной сборки в TFS с помощью API?

Как я могу это сделать?

EDIT 1

Пожалуйста, обратите внимание, что сборки может быть уже завершена.

ответ

0

Вы можете использовать IBuildDetailSpec.Status Property, есть BuildStatus Enumeration

сборками статус приготовьтесь к Inprogress раз начал. Затем вы можете отслеживать время в агенте сборки. Сократите время проверки файлов, вы получите то, что вам нужно.

+0

Завершенные строящиеся заготовки уже завершены. Они не ведутся. Тем не менее я хочу знать время ожидания для них. – mark

0

Нет никакого простого способа сделать это с помощью TFS API, если «время ожидания», которое вы упомянули, означает, что время от сборки было поставлено в очередь для запуска.

Как уже упоминалось, ваша сборка уже завершена, поэтому вы можете получить информацию о времени сборки из IBuildDetail, но IBuildDetail содержит только IBuildDetail.StartTime и IBuildDetail.FinishTime. Время очереди сборки включено в IQueueBuild (IQueueBuild.Queuetime). Поэтому вам нужно преобразовать IBuildDetail в строку и затем выполнить поиск в QueueIds в строке, чтобы получить QueueID. И тогда вы можете получить IQueueBuild через:

время
IQueuedBuild iqb = IBuildServer.GetQueuedBuild(QueueID,QueryOptions.All); 

Очередь iqb.QueueTime. Сравните IQueueBuild.Queuetime с IBuildDetail.StartTime, вы должны получить время ожидания.

+0

Я не уверен, что понимаю часть «convert IBuildDetail to string». Вы подразумеваете отсутствие API для получения QueueIds? Является ли это преобразование простым 'ToString()' вызовом? – mark

+0

@mark Да, QueueID существует в IBuildDetails, но API отсутствует, чтобы получить его напрямую. Преобразуйте его в строку через ToString(), вы увидите всю информацию, содержащуюся в нем. –

+0

Невероятно. Я дам ему попробовать. – mark