source code control

advertisement
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.
Download