Я использую пакет NuGet Microsoft.TeamFoundationServer.Client для доступа к этим API REST; У меня это хорошо работает для ряда различных сценариев. Новое требование заключается в отображении всех предупреждающих сообщений, генерируемых во время сборки конвейера.
Мой начальный звонок
Timeline timeline = await BuildHttpClient.GetBuildTimelineAsync(project, buildId);
казалось, что я искал, так как вызов timeline.Records.Select(r => r.WarningCount).Sum()
возвращает то же количество предупреждений, что и в сводке по сборке в веб-интерфейсе, а предупреждения появляются в свойстве Issues
экземпляров Records
, Однако для сборки, которая возвратила более 14 000 предупреждений, timeline.Records.SelectMany(r => r.Issues)
возвращает всего 57; Похоже, что API возвращает только первые десять или около того предупреждений от каждой задачи, выполненной конвейером.
Я видел в другом месте, что я мог бы сделать что-то вроде
Stream s = await BuildHttpClient.GetBuildLogAsync(project, buildId, logId);
чтобы получить журналы индивидуально для каждой задачи (после перечисления их отдельным вызовом), а затем проанализировать возвращаемый поток на наличие кодов предупреждений, но, поскольку в этом конвейере довольно много задач, некоторые из них с довольно многословной регистрацией, я предпочел бы не перегружать сервисы больше, чем необходимо, а также загружать большие объемы данных без необходимости.
Существует ли более эффективный механизм извлечения совокупности всех предупреждений (и, возможно, ошибок) или что-то, что я пропустил в документах REST, например, способ получения вызова службы временной шкалы для их возврата