Опубликован: 25.03.2010 | Уровень: специалист | Доступ: платный
Дополнительный материал 4:

Практикум

Как настроить непрерывную интеграцию в Visual Studio Team Foundation Server

Область применения

  • Microsoft® Visual Studio® 2005 Team Foundation Server (TFS) .
  • Microsoft Visual Studio Team System (VSTS) .

Описание

В Visual Studio 2005 Team Foundation Server нет стандартного решения для непрерывной интеграции ( Continuous Integration, CI ), но имеется вся инфраструктура, необходимая для реализации собственного решения. В этой статье подробно разбирается процесс настройки сборки CI в TFS с помощью решения, предоставленного группой VSTS. Это решение устанавливает веб-службу, выполняющуюся от имени учетной записи с правом доступа к серверу TFS. Благодаря подписке на событие CheckinEvent эта веб-служба будет запускать сборку при каждом возврате правок.

Примечание Пользователи TFS 2008 могут настроить процесс непрерывной интеграции прямо из Visual Studio. Щелкните правой кнопкой описание типа сборки в узле Builds дерева Team Explorer, выберите команду Edit Build Definition, щелкните Trigger и активируйте сборку при возврате правок.

Содержание

  • Задачи.
  • Обзор.
  • Порядок операций.
  • Прежде всего.
  • Шаг 1 - создание и тестирование сборки.
  • Шаг 2 - установка решения непрерывной интеграции.
  • Шаг 3 - настройка решения непрерывной интеграции.
  • Шаг 4 - подписка на событие CheckinEvent.
  • Шаг 5 - тестирование непрерывной интеграции.
  • Шаг 6 - настройка уведомлений по электронной почте.
  • Дополнительные ресурсы.

Задачи

  • Познакомиться с непрерывной интеграцией.
  • Создать сборку непрерывной интеграции при помощи TFSBuild и решения группы VSTS.

Обзор

Для повышения качества кода разработчикам необходима постоянная обратная связь по качеству каждого возвращаемого ими изменения. Это особенно важно, когда изменения приводят к сбою сборки и ошибкам компиляции. Чем раньше разработчик получит отзыв, тем быстрее он исправит ошибки и устранит препятствие в работе других разработчиков и тестиров-щиков. В результате повысится производительность всех членов команды.

В такой ситуации особую ценность приобретает непрерывная интеграция - процесс создания сборок при каждом возврате изменений в систему управления исходным кодом. Сборка непрерывной интеграцией обеспечивает максимально быструю обратную связь. Для еще большей эффективности работы в сборки CI можно ввести пороги качества.

Порядок операций

  • Шаг 1 - создание и тестирование сборки.
  • Шаг 2 - установка решения непрерывной интеграции.
  • Шаг 3 - настройка решения непрерывной интеграции.
  • Шаг 4 - подписка на событие CheckinEvent.
  • Шаг 5 - тестирование непрерывной интеграции.
  • Шаг 6 - настройка уведомлений по электронной почте.

Прежде всего

Убедитесь, что учетная запись, от имени которой выполняется служба сборки, обладает разрешением Start a build на сервере Team Foundation Server.

Шаг 1 - создание и тестирование сборки

На начальном этапе мы создадим тестовую сборку и проверим возможность ее выполнения из Visual Studio. Если сборку выполнить не удается, перед переходом к следующему этапу необходимо исправить в ней ошибки.

  1. Создайте для тестирования сценария сборки проект Microsoft Windows® Forms.
  2. Убедитесь, что сборка проекта выполняется правильно.
  3. Верните проект в систему управления исходным кодом.
  4. Создайте сценарий командной сборки:
    • В Team Explorer щелкните правой кнопкой Team Builds и выберите New Team Build Type.
    • Заполните страницы мастера Team Build Type Creation Wizard.
  5. Проверьте работоспособность сценария командной сборки:
    • В Team Explorer щелкните правой кнопкой созданный тип сценария командной сборки.
    • В контекстном меню выберите команду Build Team Project <Имя вашего сценария сборки>.
    • Убедитесь, что тип выбран правильно, и щелкните Build.
  6. Просмотрите результаты сборки и убедитесь, что в процессе сборки не возникло ошибок.

Важно! Убедитесь, что учетная запись TFSService, от имени которой выполняются службы сборки, обладает полным доступом к общей папке для размещения результатов сборки, заданной в Team Build Type Wizard.

Шаг 2 - установка решения непрерывной интеграции

Установите решение непрерывной интеграции, предоставленное командой VSTS. Более подробную информацию об этом решении вы найдете по адресу http://msdn2.microsoft.com/en-us/library/ms364045(VS.80).aspx.

  1. Скачайте решение из источника, расположенного по адресу http://down-load.microsoft.com/download/6/5/e/65e300ce-22fc-4988-97de-0e81d3de 2482 ci.msi и установите его на своем сервере TFS.
  2. На второй странице мастера установки убедитесь, что выбран сайт "Team Foundation Server".

При установке в корневой папке сервера уровня приложений TFS создается виртуальный каталог. Это должен быть веб-сайт Internet Information Services (IIS) с именем Team Foundation Server, связанный с портом 8080.

Шаг 3 - настройка решения непрерывной интеграции

На данном этапе выполняется настройка CI: задается проект, сборка которого будет выполняться непрерывно, сервер сборки и используемый тип сборки.

Чтобы приложение, содержащееся в виртуальном корневом каталоге, выполнялось в пуле приложений TfsAppPool, выполните следующие действия:

  1. Раскройте меню Start, Administrative Tools и выберите команду IIS Manager.
  2. Разверните веб-сайт Team Foundation Server.
  3. Щелкните правой кнопкой CI Web Application и убедитесь, что для параметра Application Pool задано значение TfsAppPool.

Чтобы настроить процесс непрерывной интеграции, выполните следующие действия:

  1. Откройте файл Web.config для CI Web Application, размещенный в папке C:\Program Files\Microsoft Visual Studio 2005 Team Foundation Server\ Web Services\CI\.
  2. Задайте следующие свойства в новом разделе, разместив его под разделом <appsettings> :
    • TeamFoundationServer - URL уровня приложений, задается в формате http://компьютер:8080.
    • TeamProject - командный проект, для которого активируется непрерывная интеграция.
    • BuildType - тип сборки, который должен использоваться при непрерывной интеграции. Обычно сценарий включает только саму сборку, но сюда можно добавить также базовое тестирование и статический анализ.
    • Build Machine - необязательный параметр, используется для переопределения сервера сборки, заданного в типе сценария сборки по умолчанию.

Ниже приведен пример настроек:

…
<add key="1" value="TeamServer=http://TFSRTM:8080;TeamProjectName=Adventure
Works;BuildType=Test Build"/>
…

Шаг 4 - подписка на событие CheckinEvent

Подпишитесь на событие CheckinEvent, используя инструмент bisubscribe, поставляемый с TFS.

  1. Откройте окно командной строки и перейдите в папку C:\Program Files\ Microsoft Visual Studio 2005 Team Foundation Server\TF Setup\
  2. Выполните команду: Bissubscribe /eventType CheckinEvent /address http://TFSRTM:8080/ ci/notify.asmx /deliveryType Soap /domain http://TFSRTM:8080
  3. Чтобы убедиться, что подписка выполнена, сделайте следующее:
    • Откройте Microsoft SQL Server™ Management Studio.
    • Откройте базу данных tfsIntegration.
    • Откройте таблицу tbl_subscription.

В этой таблице содержатся записи для всех событий, на которые вы подписаны. Там должна быть и запись о том, что решение CI подписано на событие CheckinEvent. В случае необходимости вы вольны отказаться от подписки на любое из зарегистрированных событий, удалив соответствующую запись из таблицы.

Шаг 5 - тестирование непрерывной интеграции

Теперь нужно проверить правильность выполнения CI -сборки.

  1. Откройте созданное на шаге 1 приложение Windows Forms.
  2. Внесите в код какие-нибудь незначительные изменения, которые гарантированно не вызовут сбой сборки.
  3. Возвратите внесенные изменения в систему управления исходным кодом.
  4. Если у вас есть доступ к компьютеру, на котором выполняется сборка, откройте Диспетчер задач ( Task Manager ) и проверьте степень загрузки центрального процессора этого компьютера. Она должна возрастать после возврата изменений, что свидетельствует о выполнении сборки. В списке процессов должно быть видно, что центральный процессор используется процессами msbuild, csc и (или) aspnet_compiler.
  5. Дайте сборке завершиться, а затем в Team Explorer щелкните дважды All Build Types и найдите свою сборку.
Устранение неисправностей

Если сборки нет в списке, выполните следующие действия:

  1. Убедитесь, что правильно подписались на событие. Подробнее об этом - в пункте 3 предыдущего шага.
  2. Убедитесь, что правильно настроили файл Web.config веб-приложения CI. Подробнее - в шаге 3.
  3. Убедитесь, что веб-приложение CI выполняется в соответствующем контексте и имеет доступ к серверу TFS.
  4. Если все сделано правильно, но сборка по-прежнему дает сбой, проведите отладку веб-приложения:
    • Создайте новый проект веб-сайта.
    • Добавьте в проект существующий веб-сайт.
    • Щелкните кнопку Local IIS и выберите из списка веб-приложение CI.
    • Откройте notify.cs и создайте точку останова в методе Notify.
    • Нажмите F5, чтобы начать отладку.
    • Внесите изменения в тестовое приложение Windows Forms и верните код в систему управления исходным кодом.
      • Если в ходе выполнения точка останова не достигнута, событие не детектируется. Попробуйте подписаться на него еще раз.
      • Если в ходе выполнения приложение останавливается в точке останова, продолжайте отладку.
      • Убедитесь, что в Microsoft Internet Explorer включена отладка сценариев. В меню Сервис (Tools) выберите Свойства обозревателя (Internet Options) и перейдите на вкладку Дополнительно (Advanced) . Убедитесь, что флажок Отключить отладку сценариев (Internet Explorer) (Disable Script Debugging (Internet Explorer)) сброшен.

Шаг 6 - настройка уведомлений по электронной почте

Можно настроить оповещение всех заинтересованных сторон о завершении сборки по электронной почте.

  1. В Team Explorer щелкните правой кнопкой соответствующий командный проект.
  2. Выберите Project Alerts.
  3. Выберите параметр A build completes и введите адрес или адреса электронной почты для рассылки уведомлений.

Дополнительные ресурсы

Илья Макаренко
Илья Макаренко

Добрый день.

Вопрос №1

Какова стоимость получения диплома о мини-МБА по данному курсу? Или ориентироваться на указанную на сайте?

Вопрос №2

Возможно ли начать обучение без потери результатов, не отправив документы на зачисление, а отправку выполнить позже?

Александр Медов
Александр Медов

Здравствуйте, какова полная сумма предоставленной услуги с печатью документа и отправкой по почте?

Иван Циферблат
Иван Циферблат
Россия, Таганрог, 36, 2000