Заметки консультанта

Шамрай Александр Владимирович

Практическое руководство по отчетности TFS. Дополнительный Сервис Отчетности

Posted by Shamrai Alexander на 6 декабря, 2014

Для каждой коллекции проектов Team Foundation Server создает базу данных OLTP. База данных для коллекции командных проектов по умолчанию называется Tfs_DefaultCollection. Здесь TFS хранит все «активные» данные. Данные из этой базы данных подаются сначала в базу данных звездообразной схемы Tfs_Warehouse, а затем к OLAP кубу Tfs_Analysis.

Т.к. создание отчетов поддерживается из баз данных Tfs_Warehouse и Tfs_Analysis, Microsoft не рекомендует создавать отчеты напрямую из базы данных Tfs_DefaultCollection. Причина этого в том, что схема база данных OLTP часто меняется новыми TFS релизами и обновлениями.

Однако TFS API предоставляет альтернативный способ выборки данных из базы данных Tfs_DefaultCollection. Вы можете написать собственные службы, которые используют TFS API и обеспечивают альтернативный способ получения данных.

Это руководство поставляется с примером службы WCF. Служба использует TFS API для получения информации о сборках и шагах сборки из базы данных OLTP.

Предварительные требования

Чтобы настроить дополнительный сервис отчетности, вам понадобится машина со следующими возможности Microsoft Windows:

  • Microsoft Internet Information Server (IIS) v 7.0 or v. 8.0.
  • Microsoft .NET Framework 4.

Требования к безопасности

Вам нужно будет иметь учетную запись службы, которая добавлена в группу TFS «Builders». Группа Builders создается для каждой вновь созданной коллекции командных проектов.

Пошаговое руководство

Шаг Инструкции
1 Установка

[ ] — Сделано

  • Скопируйте папку Teamreports\TeamReportService из кода примера на веб-сервер, где вы будете развертывать дополнительную службу TFS. Вы можете использовать сервер приложений TFS или какую-то другую машину, которая может вызывать TFS API.
  • Откройте службы IIS и создайте пул приложений, который называется TFSReports.
  • Выберите .Net Framework v4.0.30319 для версии .NET Framework и Integrated для режима управляемого конвейера.
  • Нажмите кнопку ОК, чтобы создать пул приложений. Щелкните на нем правой кнопкой мыши и выберите пункт Advanced Settings.
  • Нажмите Identity и задайте учетную запись для службы, как указано в требовании безопасности выше.
  • Создайте новый веб-сайт с называнием TfsReports. Выберите свой недавно созданный пул приложений TFSReports как пул приложений и установите сайт на скопированный каталог TeamReportsService.
  • Для привязки созданного веб-сайта задайте ему уникальное имя DNS или назначьте уникальный порт на сервере. Нажмите кнопку ОК. Служба в настоящее время развернута и готова к вызову.
2. Понимание Сигнатуры

[ ] — Сделано

  • Ваша дополнительная служба отчетов TFS теперь может вызываться из любого клиента, который может делать запросы SOAP. Пример службы содержит один сервис, который называется BuildService, с одной операцией GetBuildStepDurationReport. Сигнатура операции следующая:

/// <summary>

///
Returns the Build Step Duration report for a given build

/// </summary>

/// <param name=»projectCollectionUri»>The Project collection Uri</param>

/// <param name=»teamProjectName»>The Team Project Name</param>

/// <param name=»buildDefinitionName»>The build definition name for the build for which the report should return the build duration. Only the latest build is extracted.</param>

///<param name=»reportOption»>An enumeration that determines which steps should be returned</param>

/// <returns>A list of build steps with their respective duration</returns>

[OperationContract]

IEnumerable<BuildStep> GetBuildStepDurationReport(string projectCollectionUri, string teamProjectName, string buildDefinitionName, BuildStepDurationReportOption reportOption);

  • Он принимает идентификатор сборки в качестве параметра и возвращает список всех сборок.
3. Понимание Операций

[ ] — Сделано

  • Операция принимает такие параметры, как URL-адрес коллекции командного проекта, имя командного проекта, имя определения сборки и перечисление, которое позволяет вызывающему объекту указать нужны ли все шаги, десять самых быстрых или десять самых медленных шагов.
  • Результатом является перечисление объектов BuildStep, который содержит свойства такие как имя шага сборки, время начала, время окончания и продолжительность.

/// <summary>

/// The BuildStep class encapsulates a single Build Step in a build report

/// </summary>

[DataContract]

public class BuildStep

{

/// <summary>

/// Gets or sets the name of the Build Step

/// </summary>

[DataMember]

public string Name { get; set; }

/// <summary>

///
Gets or sets the Start Time of the Build Step

/// </summary>

[DataMember]

public DateTime StartTime { get; set; }

/// <summary>

///
Gets or sets the End Time of the Build Step

/// </summary>

[DataMember]

public DateTime? EndTime { get; set; }

/// <summary>

///
Gets or sets the Duration of the build Step

/// </summary>

[DataMember]

public TimeSpan? Duration { get; set; }

}

  • Операция возвращает список шагов с их продолжительность выполнения в последней сборке…
  • Отчет полезен для менеджеров сборки, которые хотят диагностировать, какие наиболее медленные части.
4. Создание Клиентского Прокси-приложения

[ ] — Сделано

  • Использование службы можно продемонстрировать с помощью приложения WcfTestClient.exe, которое входит в состав Visual Studio. Для создания клиента выполните следующие действия:
  • Создайте новое консольное приложение Windows в Visual Studio.
  • Щелкните правой кнопкой мыши на ссылки служб и нажмите Add Service Reference.
  • В URL-адрес службы введите http://TFSCustomReports/BuildService.svc и нажмите кнопку Go. Выберите BuildReports, введите название подходящего пространства имен и нажмите кнопку ОК.

  • Нажмите кнопку ОК. Это сгенерирует прокси-класс для службы.
5. Клиентский Код

[ ] — Сделано

  • Теперь создайте экземпляр прокси-класса и выполните его вызов.
  • Окончательный код выглядит так:

    using (var client = new BuildReportsClient())

    {


    var buildSteps = client.GetBuildStepDurationReport( «*TeamProjectCollectionUri», «TeamProjectName», «BuildDefinitionName», BuildStepDurationReportOption.All);


    foreach (var step in buildSteps)

    {

    Console.WriteLine(«Build Step {0} — Duration {1}», step.Name, step.Duration);

    }

    }

6. Запуск Клиента

[ ] — Сделано

  • Перестройте и запустите клиентское приложение, нажав клавишу F5.

Таблица 13. Пошаговое руководство для дополнительного сервиса отчетности

Примечание Пример службы и клиента включен в код этого руководства.https://vsarreportguide.codeplex.com/releases/view/115743

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

 
%d такие блоггеры, как: