msdevcon.ru #msdevcon ВНУТРЕННИЙ ОПЫТ КОМПАНИИ MICROSOFT ПО АВТОМАТИЧЕСКОЙ СБОРКЕ И НЕПРЕРЫВНОЙ ИНТЕГРАЦИИ ВЕБ СЕРВИСОВ И ПРИЛОЖЕНИЙ С ПОМОЩЬЮ TFS 2012 Евгений Чигиринский Microsoft Corp Группа Online Media Platform Content Management System для всех сайтов MSN и Windows 8 Bing apps • Хранение и извлечение контента • Работа с создателями контента (редакторы, ingestion) • Глобальный доступ (msn и Windows 8 apps доступны во всех регионах мира) • Масштабируемость и высокая нагрузка Система управления контентом Service Service Service Content MSN.COM Service Service Service Service Service Service Service Service Windows 8 Bing Apps Задачи Улучшение качества продукта Автоматизация сборок и установки, отслеживание изменений на интеграционных и production средах Сокращение расходов на обслуживание системы Управляемые изменения Service Service Service Content MSN.COM Service Service Service Service Service Service Service Service Windows 8 Bing Apps Решение Максимальное ускорение доставки изменений от разработчика на production environment путем автоматической сборки и непрерывной интеграции Build, Unit tests, Functional tests Checkin Source Code Control Deployment, Integration Tests Deployment PreProduction Environment Drop Share Team Foundation Server 2012 Production SOURCE CODE CONTROL Структура, хранение и обслуживание кода Build, Unit tests, Functional tests Checkin Source Code Control Deployment, Integration Tests Drop Share Deployment PreProduction Environment Используемые возможности TFS 2012 TFS Server, переход на Git в среднесрочной перспективе Code Reviews (mandatory!) Work Item Tracking Production Структура, хранение и обслуживание кода Изоляция кода каждого сервиса/приложения Код каждого сервиса/приложения хранится и строится отдельно Main branch – для основной ветки кода Prod branch – содержит состояние кода, который в данный момент установлен на Production Shared Components Изолированы в отдельные проекты и сборки в виде NuGet packages BUILDS Builds Build, Unit tests, Functional tests Checkin Source Code Control Deployment, Integration Tests Drop Share Deployment PreProduction Environment Используемые возможности TFS 2012 Team Build Build Explorer Build Quality Management Production Builds • Изоляция билд серверов • Обязательные gated checkins для каждого приложения • Скорость выполнения сборки одного приложения – не более 10 минут! • Включая прогон всех тестов • Билд-сервер должен быть достаточно мощным, чтобы обеспечить быструю сборку и тестирование приложения Типичные параметры билд-сервера • CPU: Intel Xenon R5410 2.33GHz (dual) • 16 Gb RAM • Тип и размер жесткого диска – зависит от кода и задач • SSD может оказаться слишком дорогим решением • 4-8 Build Agents • Параллельные сборки DEPLOYMENT TO PREPRODUCTION AND INTEGRATION TESTS PreProduction & Integration Tests Build, Unit tests, Functional tests Checkin Source Code Control Deployment, Integration Tests Drop Share Deployment PreProduction Environment Требования к Preproduction Environment Копия Production Environment (желательно в том же DC) Поддержка автоматической установки Мониторинг Production Build Quality Management TFS 2012 • TFS 2012 позволяет определить разные степени качества сборки Release Management и TFS 2012 - проблемы и решения Как узнать, что билд готов к тестированию? TFS 2012 не гарантирует немедленную отправку event-а по окончании сборки Невозможность использования TFS 2012 Events как механизма запуска интеграционных тестов Lab Management как средство установки? TFS 2012 использует Build Agent/Test Agent, установленный на production box-е, чтобы загрузить на него новую версию сборки TFS 2012 Lab Management плохо совместим с промышленными системами автоматического управления датацентрами Решение - CI Dispatcher Сервис, который соединяет систему автоматического управления датацентрами и TFS 2012 Team Foundation Server 2012 Drop Share Загружает готовые сборки и управляет запуском тестов (используя MSTest) Скорость выполнения всех интеграционных тестов – не более 45 минут! CI Dispatcher Копирует результаты тестов на Drop Share для анализа разработчиками Автоматически помечает сборку в TFS 2012 Build Quality Management system на основе результатов всех тестов PreProduction Envorionment Production Envorionment CI Dispatcher в действии Preproduction Drop Share Service 1 1.0 V 2.0 `Released Service 2 1.0 2.0 2.0 CI Passed Queued Released for CI Service 2 1.0 …Released Service N 1.0 Released Service 1 Service 1 Service Service 22 1.0 2.0 Service Service 22 1.0 Service 2 Deployment Production … Service N 1.0 Integration IntegrationTest TestPassed Run Service 2 Deployment 1.0 2.0 1.0 … Service N 1.0 DEPLOYMENT TO PRODUCTION Автоматическая установка Build, Unit tests, Functional tests Checkin Source Code Control Deployment, Integration Tests Drop Share Deployment PreProduction Environment Production Сборки, прошедшие Integration Tests и помеченные как “CI Passed”, автоматически становятся в очередь на установку на production Во время установки ведется постоянный мониторинг всех машин на production В случае успешной установки, CI Dispatcher помечает сборку как “Released” в TFS Build Management, используя TFS APIs Выводы TFS 2012 позволяет надежно управлять процессом автоматической сборки и непрерывной интеграции в условиях множества проектов, зависящих друг от друга Наличие удобного TFS 2012 API позволяет интегрировать частные решения с эффективным общим управлением разработки программного обеспечения, реализованным в TFS 2012 Ссылки и ресурсы Visual Studio TFS 2012 http://msdn.microsoft.com/en-us/vstudio/ff637362.aspx Brian Harry’s blog http://blogs.msdn.com/b/bharry/ Release Management with TFS 2012 http://nakedalm.com/release-management-with-team-foundation-server-2012/ © 2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.