1. 5-я конференция .NET разработчиков
21 октября 2012
www.dotnetconf.ru
Непрерывная интеграция в
ритме военного марша
Тимур Рахматиллаев
ByndyuSoft
twitter.com/eskat0n
2. Непрерывная интеграция
Выполнение частых автоматизированных
сборок проекта для скорейшего
выявления и решения интеграционных
проблем
Непрерывная интеграция в ритме военного марша
Тимур Рахматиллаев
2
4. Непрерывная интеграция
Выполнение частых
автоматизированных сборок проекта
для скорейшего выявления и решения
интеграционных проблем
Непрерывная интеграция в ритме военного марша
Тимур Рахматиллаев
4
5. Автоматизированных?
• TeamCity
• CruiseControl.NET
• Jenkins
• Travis CI
тысячи их...
Непрерывная интеграция в ритме военного марша
Тимур Рахматиллаев
5
6. TeamCity
• Написана на языке Java и выполнена в
виде servlet’а для Apache Tomcat
• До 20 конфигураций сборки в
бесплатной версии
• Разработчик – компания Jetbrains
Непрерывная интеграция в ритме военного марша
Тимур Рахматиллаев
6
7. TeamCity
• Проект
• Конфигурация сборки
• Настройки VCS
• Шаги сборки (запуск какого-либо инструмента)
• Настройки переменных окружения и
системных переменных
• Триггеры сборки
• Настройки доступа к артефактам сборки
Непрерывная интеграция в ритме военного марша
Тимур Рахматиллаев
7
8. Непрерывная интеграция
Выполнение частых автоматизированных
сборок проекта для скорейшего
выявления и решения интеграционных
проблем
Непрерывная интеграция в ритме военного марша
Тимур Рахматиллаев
8
9. Насколько частых?
• По наличию изменений в системе
контроля версий
• По наличию артефактов сборки
• По расписанию
• Вручную
и другие...
Непрерывная интеграция в ритме военного марша
Тимур Рахматиллаев
9
10. Непрерывная интеграция
Выполнение частых автоматизированных
сборок проекта для скорейшего
выявления и решения интеграционных
проблем
Непрерывная интеграция в ритме военного марша
Тимур Рахматиллаев
10
11. Способы выявления
проблем
• Ошибки при сборке проекта
• Наличие проваленных модульных или
интеграционных тестов
• Превышение критического порога
какой-либо метрики для оценки
качества кода
или любая иная логика специфичная
для проекта...
Непрерывная интеграция в ритме военного марша
Тимур Рахматиллаев
11
13. Непрерывная интеграция
Выполнение частых автоматизированных
сборок проекта для скорейшего
выявления и решения интеграционных
проблем
Непрерывная интеграция в ритме военного марша
Тимур Рахматиллаев
13
14. Скорейшего?
Оповещения членов команды
разработчиков
• По email
• С помощью jabber
• С помощью всплывающих сообщений
программы TeamCity Tray Notifier
Непрерывная интеграция в ритме военного марша
Тимур Рахматиллаев
14
15. На вкус и цвет...
Тимлид Разработчики QA
Новая сборка Наличие неудавшейся Успешная
сборки со своими сборка в
изменениями в конфигурации
конфигурации для
непрерывной интеграции тестирования
Непрерывная интеграция в ритме военного марша
Тимур Рахматиллаев
15
16. Конфигурации для
Web-приложения
• Непрерывная интеграция: сборка,
запуск модульных тестов, вычисление
метрик кода
• Разворачивание на UAT-сервере
• Разворачивание недельной версии
• Разворачивание на production-сервер
• Разворачивание на production-
сервер старой версии
Непрерывная интеграция в ритме военного марша
Тимур Рахматиллаев
16
17. Continuous Deployment
Непрерывная интеграция в ритме военного марша
Тимур Рахматиллаев
17
18. Достоинства Continuous
Deployment
• Обеспечивается гарантированное
наличие версии для тестирования
• Меньшие требования к программной
среде на компьютерах тестировщиков
• Скорость развертывания
• Исключается влияние «человеческого
фактора» на критических этапах
жизненного цикла программы
Непрерывная интеграция в ритме военного марша
Тимур Рахматиллаев
18
19. Репозиторий артефактов
Хранит результаты сборки проекта
(исполняемые файлы, библиотеки,
ресурсы), необходимые для
разворачивания произвольной их версии
в произвольный момент времени
Непрерывная интеграция в ритме военного марша
Тимур Рахматиллаев
19
20. Репозиторий артефактов
• Получение номера ревизии из DVCS по
версии программного продукта
• Обновление на эту ревизию
• Разворачивание системы из
артефактов
Непрерывная интеграция в ритме военного марша
Тимур Рахматиллаев
20
21. Репозиторий артефактов
• При использовании FluentMigrator
возможно гибкое версионирование
базы данных
• Версионные backup’ы БД (snapshot’ы)
Непрерывная интеграция в ритме военного марша
Тимур Рахматиллаев
21
22. Спасибо за внимание
Тимур Рахматиллаев
ByndyuSoft
eskat0n@soft.byndyu.ru
twitter.com/eskat0n
Непрерывная интеграция в ритме военного марша
Тимур Рахматиллаев
22