3. Цель 3 Связь между: Agile-методологиями и практиками конфигурационного менеджмента Инструментами, использующихся практиками конфигурационного менеджмента
4. Какие такие практики? Контроль версий Билд менеджмент Автоматизированные сборки Непрерывная интеграция Релиз менеджмент Управление зависимостями 4
6. Simplest scenario 6 Trunk Development mainline Repository directory commits project assets project state Source code changes
7. Простейший сценарий 7 После нескольких последовательных коммитов разработчик желает сделать сборку приложения Зачем? Будем считать что сборка будет результатом реализации функциональных требований (баг/фича) Сборка доступна конечному пользователю: Собирается отдельное десктопное приложение Развертывается веб-приложение Сбор метрик и статистики (интеграционная сборка)
8. Простейший сценарий 8 Затем возникает необходимость сделать релиз Зачем? Релиз – это специальный тип сборки Но имеет специфичные особенности: Полная реализация набора требований Качество Доступность к использованию
9. Простейший сценарий 9 Простейший сценарий - это… …случай, когда описанные шаги не требуют слишком много усилий
14. Ветвление для релиза 14 Заметили? Возникает непоследовательность в нумерации версий! Имеет смысл разделить разработку в trunk’eи стабилизацию релиза
16. Ветвление для релиза 16 Но это еще не всё… Вам может понадобиться стабилизировать релиз в любое время и При этом не прерывать параллельной разработки или стабилизации релиза
21. Типы веток Несовместимость означает то, что… …слияние изменений не может быть выполнено в родительскую ветку Пример: Глубокий рефакторинг (изменение иерархии директорий/файлов) Серьезное архитектурное/структурное изменение Переписывание приложения или его отдельных частей с нуля 21
23. Типы веток.Ветки поддержки и релиза 23 /0.2.x /0.3.x /trunk /1.0.x /0.1.x /1.x.x Ветка релиза Ветка поддержки
24. Типы веток.Ветки поддержки и релиза 24 Допускает слияние с родительской веткой Существует до тех пор, пока не выпущен стабильный релиз Ветки-потомки не разрешены Не допускает слияния с родительской веткой Существует всегда Разрешены ветки-потомки Не разрешены ветки-потомки для поддержки Не рекомендуются слияния с ветками- потомками Ветка поддержки Ветка релиза
26. Experimental vs release branch 26 Экспериментальная ветка Не допускает веток-потомков Использует строгое именование. Пример: 1.0.x Использует собственную область значений для нумерации сборок Рекомендуемый подход к слияниям: после каждой сборки/релиза Допускает любое число веток-потомков Правил к именованию не выдвигается. Пример: new_eng_test Разделяет область значений для нумерации сборок с родственными ветками Нет рекомендованного подхода к слияниям Ветка релиза
35. Scrum и SCM 35 /trunk demo PA/A AR/BR 1.0.1 1.x.0 1.x.1 1.x.2 1.0.0 1.x.3 user stories /1.0.x sprint backlog
36. Agile SCM 36 Нет запланированной даты релиза (agile релиз менеджмент) Вызревание релиза (agile тестирование) Переключение команд на приоритетные направления разработки (agile ресурс менеджмент)
37. 37 А главное то, что… … мы теперь знаем как правильно!
39. Полезные ссылки http://www.infoq.com/articles/agile-version-control - agile контроль версий http://svnbook.red-bean.com/ - официальная документация/справочное руководство по subversion http://www.ericsink.com/ - один из лучших блогов, посвященный контролю версий http://www.versioncontrolblog.com/ - еще один блог о контроле версий http://better-scm.berlios.de/comparison/comparison.html - сравнительная таблица систем контроля версий http://www.cmcrossroads.com/ - основной ресурс посвященный конфигурационному менеджменту http://www.infoq.com/news/2009/03/Continuous-Deployment - про непрерывные развертывания 39