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

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

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

Posted by Шамрай Александр на Декабрь 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
Advertisements

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

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

Логотип WordPress.com

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

Фотография Twitter

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

Фотография Facebook

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

Google+ photo

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

Connecting to %s

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