SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Agile software configuration management Шмаркатюк Сергей, EPAM Systems
Повествование 2 От простого к сложному
Цель 3 Связь между: Agile-методологиями и практиками конфигурационного менеджмента Инструментами, использующихся практиками конфигурационного менеджмента
Какие такие практики? Контроль версий Билд менеджмент  Автоматизированные сборки Непрерывная интеграция Релиз менеджмент Управление зависимостями 4
Представление 5 Диаграммы потока разработки Ветки Релизы Сборки Теги Слияния Директории Коммиты
Simplest scenario 6 Trunk Development mainline Repository directory commits project assets project state Source code changes
Простейший сценарий 7 После нескольких последовательных коммитов разработчик желает сделать сборку приложения Зачем? Будем считать что сборка будет результатом реализации функциональных требований (баг/фича) Сборка доступна конечному пользователю:  Собирается отдельное десктопное приложение Развертывается веб-приложение Сбор метрик и статистики (интеграционная сборка)
Простейший сценарий  8 Затем возникает необходимость сделать релиз Зачем? Релиз – это специальный тип сборки Но имеет специфичные особенности: Полная реализация набора требований Качество Доступность к использованию
Простейший сценарий 9 Простейший сценарий - это… …случай, когда описанные шаги не требуют слишком много усилий
Простейший сценарий 10 релиз ! /trunk ? ? 2 3 ? 1 ? ? 1.1 1.2 ? 1.0
11 Иногда не все так просто
12 Представим себе … что нужно стабилизировать релиз и обеспечить одновременную разработку следующей версии приложения
Ветвление для релиза 13 релиз слияние ! ! /trunk ? ? 2 3 ? ? 1 2.3 2.1 2.2 2.0 ? ? ? /? /1.x 1.1 1.2 1.0 ? ? ?
Ветвление для релиза 14 Заметили? Возникает непоследовательность в нумерации версий! Имеет смысл разделить разработку в trunk’eи стабилизацию релиза
Ветвление для релиза 15 /trunk 5 6 8 4 7 ? ? 2 3 ? 1 ? ? ? ? ? /? /1.x /? /2.x 1.1 1.2 2.1 1.0 2.0 ? ? ? ? ?
Ветвление для релиза 16 Но это еще не всё… Вам может понадобиться стабилизировать релиз в любое время и При этом не прерывать параллельной разработки или стабилизации релиза
Ветвление для релиза 17 /? /2.x 2.1 2.0 ? ? /trunk 1.3 2.2 5 6 ? ? 4 ? ? 2 3 ? 1 ? ? ? 0.1 0.2 0.3 0.4 0.5 0.6 /? /1.x 1.1 1.2 1.0 ? ? ?
Типы веток 18 Время подумать о типах веток! ?
Типы веток 19 /2.x Веткарелиза x.x 2.1 2.0 ? ? /trunk Без типа (просто trunk) 1.3 2.2 x.8 x.7 5 6 x.2 x.5 x.6 ? ? 4 ? ? 2 3 x.1 ? 1 x.3 ? ? ? x.4 Веткарелиза /1.x 1.1 1.2 1.0 ? ? ?
Типы веток 20 Несовместимые изменения /2.x Слияние невозможно 2.1 2.0 ? ? /trunk 1.3 2.2 x.8 x.7 5 6 x.2 x.5 x.6 ? ? 4 ? ? 2 3 x.1 ? 1 x.3 ? ? ? x.4 /1.x 1.1 1.2 1.0 ? ? ?
Типы веток Несовместимость означает то, что… …слияние изменений не может быть выполнено в родительскую ветку Пример: Глубокий рефакторинг (изменение иерархии директорий/файлов) Серьезное архитектурное/структурное изменение Переписывание приложения или его отдельных частей с нуля 21
Типы веток 22 /2.x Ветка релиза /0.2.x 2.1 2.0 ? ? 0.x.x 0.2.1 0.2.0 /trunk Слияние невозможно 1.3 x.5 x.2 ? 4 ? ? 2 3 x.1 ? 1 x.3 ? x.4 0.x.5 0.x.2 0.x.1 0.x.3 0.x.4 /? /1.x.x Ветка релиза /1.x /0.1.x 1.1 1.2 1.0 ? ? ? Ветка поддержки 0.1.1 0.1.2 0.1.0
Типы веток.Ветки поддержки и релиза 23 /0.2.x /0.3.x /trunk /1.0.x /0.1.x /1.x.x Ветка релиза Ветка поддержки
Типы веток.Ветки поддержки и релиза 24 Допускает слияние с родительской веткой  Существует до тех пор, пока не выпущен стабильный релиз Ветки-потомки не разрешены Не допускает слияния с родительской веткой Существует всегда Разрешены ветки-потомки Не разрешены ветки-потомки для поддержки Не рекомендуются слияния с ветками- потомками Ветка поддержки Ветка релиза
Типы веток.Экспериментальные ветки 25 /trunk x.2 x.0 x.4 x.6 x.8 x.11 x.7 x.9 x.3 x.1 ? 1 x.5 x.10 Экспериментальная ветка
Experimental vs release branch  26 Экспериментальная ветка Не допускает веток-потомков Использует строгое именование. Пример: 1.0.x Использует собственную область значений для нумерации сборок Рекомендуемый подход к слияниям: после каждой сборки/релиза Допускает любое число веток-потомков Правил к именованию не выдвигается. Пример: new_eng_test Разделяет область значений для нумерации сборок с родственными ветками Нет рекомендованного подхода к слияниям Ветка релиза
Наследование базыисходного кода 27 /0.2.x 0.x.x /trunk /2.x.x /0.1.x /1.x.x Последняя разработка
Наследование базыисходного кода 28 Последняя разработка должна содержаться в trunk
Наследование базыисходного кода 29 /3.x.x 4.x.x 3.x.x 2.x.x 1.x.x /trunk /2.x.x /1.x.x
Типы сборок 30
SCM в действии 31 1.x.x 2.x.x /trunk PA 1.x.3 1.x.0 2.x.0 A 1.x.1 1.x.4 2.x.1 builds B 1.x.2 1.x.5 2.x.2 /1.x.x AR 1.0.0 BR 1.0.1 RC releases 1.0.2 1.0.3 ST 1.0.4 /1.0.x
Иерархия директорийПроект 32
Иерархия директорийТеги 33
34 Где же AGILE?!
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

Weitere ähnliche Inhalte

Was ist angesagt?

Мастер класс- Maven + Jenkins
Мастер класс- Maven + JenkinsМастер класс- Maven + Jenkins
Мастер класс- Maven + JenkinsValentin Fedoskin
 
Введение в maven
Введение в mavenВведение в maven
Введение в mavenDmitry Zinushin
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Technopark
 
Инструменты разработки ПО в *nix
Инструменты разработки ПО в *nixИнструменты разработки ПО в *nix
Инструменты разработки ПО в *nixAlexander Gerasiov
 
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITYCONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITYPavel Tsukanov
 
Plugin development for intelli j platform
Plugin development for intelli j platformPlugin development for intelli j platform
Plugin development for intelli j platformchashnikov
 
Ross2013 rubanov
Ross2013 rubanovRoss2013 rubanov
Ross2013 rubanovRosaLab
 
Разработка БД с использованием инструментов MS VS 2010
Разработка БД с использованием инструментов MS VS 2010Разработка БД с использованием инструментов MS VS 2010
Разработка БД с использованием инструментов MS VS 2010Александр Шамрай
 
"Доклад не про React", Антон Виноградов, MoscowJS 27
"Доклад не про React", Антон Виноградов, MoscowJS 27"Доклад не про React", Антон Виноградов, MoscowJS 27
"Доклад не про React", Антон Виноградов, MoscowJS 27MoscowJS
 
Continuous integration with TeamCity
Continuous integration with TeamCityContinuous integration with TeamCity
Continuous integration with TeamCityAndrei Ivanov
 
настройка Wine
настройка Wineнастройка Wine
настройка Winebelhonka
 
Continous Integration
Continous IntegrationContinous Integration
Continous IntegrationGetDev.NET
 
Java 9 модули
Java 9 модулиJava 9 модули
Java 9 модулиZheka Kozlov
 
метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кодаSergii Shmarkatiuk
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxDotNetConf
 
Running Linux and Unix on Hyper-V
Running Linux and Unix on Hyper-VRunning Linux and Unix on Hyper-V
Running Linux and Unix on Hyper-VAndrey Beshkov
 

Was ist angesagt? (20)

Мастер класс- Maven + Jenkins
Мастер класс- Maven + JenkinsМастер класс- Maven + Jenkins
Мастер класс- Maven + Jenkins
 
Java one presentation
Java one presentationJava one presentation
Java one presentation
 
Введение в maven
Введение в mavenВведение в maven
Введение в maven
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5
 
Инструменты разработки ПО в *nix
Инструменты разработки ПО в *nixИнструменты разработки ПО в *nix
Инструменты разработки ПО в *nix
 
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITYCONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
 
Plugin development for intelli j platform
Plugin development for intelli j platformPlugin development for intelli j platform
Plugin development for intelli j platform
 
Ross2013 rubanov
Ross2013 rubanovRoss2013 rubanov
Ross2013 rubanov
 
01 linux-course
01 linux-course01 linux-course
01 linux-course
 
Разработка БД с использованием инструментов MS VS 2010
Разработка БД с использованием инструментов MS VS 2010Разработка БД с использованием инструментов MS VS 2010
Разработка БД с использованием инструментов MS VS 2010
 
"Доклад не про React", Антон Виноградов, MoscowJS 27
"Доклад не про React", Антон Виноградов, MoscowJS 27"Доклад не про React", Антон Виноградов, MoscowJS 27
"Доклад не про React", Антон Виноградов, MoscowJS 27
 
Continuous integration with TeamCity
Continuous integration with TeamCityContinuous integration with TeamCity
Continuous integration with TeamCity
 
настройка Wine
настройка Wineнастройка Wine
настройка Wine
 
Continous Integration
Continous IntegrationContinous Integration
Continous Integration
 
Java 9 модули
Java 9 модулиJava 9 модули
Java 9 модули
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кода
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под Linux
 
Running Linux and Unix on Hyper-V
Running Linux and Unix on Hyper-VRunning Linux and Unix on Hyper-V
Running Linux and Unix on Hyper-V
 
Net framework
Net frameworkNet framework
Net framework
 

Ähnlich wie Agile software configuration management

Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаRoman Dvornov
 
Пакетное ядро мобильного оператора: ASR5k, поиски устранение неисправностей
Пакетное ядро мобильного оператора: ASR5k, поиски устранение неисправностейПакетное ядро мобильного оператора: ASR5k, поиски устранение неисправностей
Пакетное ядро мобильного оператора: ASR5k, поиски устранение неисправностейCisco Russia
 
Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)
Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)
Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)Ontico
 
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Ontico
 
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeYehor Herasymchuk
 
Инсталляторы
ИнсталляторыИнсталляторы
Инсталляторыaepetelin
 
Как devops исчерпывает себя и что будет дальше
Как devops исчерпывает себя и что будет дальшеКак devops исчерпывает себя и что будет дальше
Как devops исчерпывает себя и что будет дальшеKirill Vechera
 
1С-Битрикс - Производительность
1С-Битрикс - Производительность1С-Битрикс - Производительность
1С-Битрикс - ПроизводительностьAlexander Demidov
 
Использование Symfony
Использование SymfonyИспользование Symfony
Использование SymfonyMedia Gorod
 
3 zalomlenkov selenium
3 zalomlenkov   selenium3 zalomlenkov   selenium
3 zalomlenkov seleniumqasib
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовSQALab
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesAliaksandr Ikhelis
 
"Опыт создания системы управления сборкой и тестированием" (полная)
"Опыт создания системы управления сборкой и тестированием" (полная)"Опыт создания системы управления сборкой и тестированием" (полная)
"Опыт создания системы управления сборкой и тестированием" (полная)SPB SQA Group
 
«Собор или базар»: системы контроля версий — централизованные или распределен...
«Собор или базар»: системы контроля версий — централизованные или распределен...«Собор или базар»: системы контроля версий — централизованные или распределен...
«Собор или базар»: системы контроля версий — централизованные или распределен...Stas Fomin
 
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Александр Егурцов
 
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)SPB SQA Group
 
Материалы вебинара – Гиперскалярная архитектура VMware EVO: RAIL совместно с ...
Материалы вебинара – Гиперскалярная архитектура VMware EVO: RAIL совместно с ...Материалы вебинара – Гиперскалярная архитектура VMware EVO: RAIL совместно с ...
Материалы вебинара – Гиперскалярная архитектура VMware EVO: RAIL совместно с ...Fujitsu Russia
 

Ähnlich wie Agile software configuration management (20)

Dev collaboration
Dev collaborationDev collaboration
Dev collaboration
 
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтенда
 
Пакетное ядро мобильного оператора: ASR5k, поиски устранение неисправностей
Пакетное ядро мобильного оператора: ASR5k, поиски устранение неисправностейПакетное ядро мобильного оператора: ASR5k, поиски устранение неисправностей
Пакетное ядро мобильного оператора: ASR5k, поиски устранение неисправностей
 
Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)
Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)
Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)
 
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
 
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And Forge
 
Инсталляторы
ИнсталляторыИнсталляторы
Инсталляторы
 
Как devops исчерпывает себя и что будет дальше
Как devops исчерпывает себя и что будет дальшеКак devops исчерпывает себя и что будет дальше
Как devops исчерпывает себя и что будет дальше
 
1С-Битрикс - Производительность
1С-Битрикс - Производительность1С-Битрикс - Производительность
1С-Битрикс - Производительность
 
Использование Symfony
Использование SymfonyИспользование Symfony
Использование Symfony
 
3 zalomlenkov selenium
3 zalomlenkov   selenium3 zalomlenkov   selenium
3 zalomlenkov selenium
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practices
 
"Опыт создания системы управления сборкой и тестированием" (полная)
"Опыт создания системы управления сборкой и тестированием" (полная)"Опыт создания системы управления сборкой и тестированием" (полная)
"Опыт создания системы управления сборкой и тестированием" (полная)
 
«Собор или базар»: системы контроля версий — централизованные или распределен...
«Собор или базар»: системы контроля версий — централизованные или распределен...«Собор или базар»: системы контроля версий — централизованные или распределен...
«Собор или базар»: системы контроля версий — централизованные или распределен...
 
Abf
AbfAbf
Abf
 
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
 
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
 
Genome
GenomeGenome
Genome
 
Материалы вебинара – Гиперскалярная архитектура VMware EVO: RAIL совместно с ...
Материалы вебинара – Гиперскалярная архитектура VMware EVO: RAIL совместно с ...Материалы вебинара – Гиперскалярная архитектура VMware EVO: RAIL совместно с ...
Материалы вебинара – Гиперскалярная архитектура VMware EVO: RAIL совместно с ...
 

Mehr von Sergii Shmarkatiuk

CS589 paper presentation - What is in unison? A formal specification and refe...
CS589 paper presentation - What is in unison? A formal specification and refe...CS589 paper presentation - What is in unison? A formal specification and refe...
CS589 paper presentation - What is in unison? A formal specification and refe...Sergii Shmarkatiuk
 
CS519 - Visual Software Evolution Reconstruction
CS519 - Visual Software Evolution ReconstructionCS519 - Visual Software Evolution Reconstruction
CS519 - Visual Software Evolution ReconstructionSergii Shmarkatiuk
 
Software version numbering - DSL of change
Software version numbering - DSL of changeSoftware version numbering - DSL of change
Software version numbering - DSL of changeSergii Shmarkatiuk
 
Continuous integration for se group meeting
Continuous integration for se group meetingContinuous integration for se group meeting
Continuous integration for se group meetingSergii Shmarkatiuk
 
CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...
CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...
CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...Sergii Shmarkatiuk
 
CS 584 - Aligning development tools with the way programmers think about code...
CS 584 - Aligning development tools with the way programmers think about code...CS 584 - Aligning development tools with the way programmers think about code...
CS 584 - Aligning development tools with the way programmers think about code...Sergii Shmarkatiuk
 
CS519 - homework project presentation
CS519 - homework project presentationCS519 - homework project presentation
CS519 - homework project presentationSergii Shmarkatiuk
 
CS519 - project idea presentation
CS519 - project idea presentationCS519 - project idea presentation
CS519 - project idea presentationSergii Shmarkatiuk
 
CS519 - Cloud Types for Eventual Consistency
CS519 - Cloud Types for Eventual ConsistencyCS519 - Cloud Types for Eventual Consistency
CS519 - Cloud Types for Eventual ConsistencySergii Shmarkatiuk
 
02 - Build and Deployment Management
02 - Build and Deployment Management02 - Build and Deployment Management
02 - Build and Deployment ManagementSergii Shmarkatiuk
 
01 - Introduction to Version Control
01 - Introduction to Version Control01 - Introduction to Version Control
01 - Introduction to Version ControlSergii Shmarkatiuk
 
1.2 introduction to scm - what does version number tell us
1.2   introduction to scm - what does version number tell us1.2   introduction to scm - what does version number tell us
1.2 introduction to scm - what does version number tell usSergii Shmarkatiuk
 
1.1 introduction to scm - xp and cm are chicken-and-egg
1.1   introduction to scm - xp and cm are chicken-and-egg1.1   introduction to scm - xp and cm are chicken-and-egg
1.1 introduction to scm - xp and cm are chicken-and-eggSergii Shmarkatiuk
 
1.0 about software configuration management trainings
1.0   about software configuration management trainings1.0   about software configuration management trainings
1.0 about software configuration management trainingsSergii Shmarkatiuk
 
04 - Agile Software Configuration Management
04 - Agile Software Configuration Management04 - Agile Software Configuration Management
04 - Agile Software Configuration ManagementSergii Shmarkatiuk
 
Организуй свой репозиторий
Организуй свой репозиторийОрганизуй свой репозиторий
Организуй свой репозиторийSergii Shmarkatiuk
 

Mehr von Sergii Shmarkatiuk (19)

CS589 paper presentation - What is in unison? A formal specification and refe...
CS589 paper presentation - What is in unison? A formal specification and refe...CS589 paper presentation - What is in unison? A formal specification and refe...
CS589 paper presentation - What is in unison? A formal specification and refe...
 
CS519 - Visual Software Evolution Reconstruction
CS519 - Visual Software Evolution ReconstructionCS519 - Visual Software Evolution Reconstruction
CS519 - Visual Software Evolution Reconstruction
 
Software version numbering - DSL of change
Software version numbering - DSL of changeSoftware version numbering - DSL of change
Software version numbering - DSL of change
 
Continuous integration for se group meeting
Continuous integration for se group meetingContinuous integration for se group meeting
Continuous integration for se group meeting
 
CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...
CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...
CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...
 
CS 584 - Aligning development tools with the way programmers think about code...
CS 584 - Aligning development tools with the way programmers think about code...CS 584 - Aligning development tools with the way programmers think about code...
CS 584 - Aligning development tools with the way programmers think about code...
 
CS519 - homework project presentation
CS519 - homework project presentationCS519 - homework project presentation
CS519 - homework project presentation
 
CS519 - project idea presentation
CS519 - project idea presentationCS519 - project idea presentation
CS519 - project idea presentation
 
CS519 - Cloud Types for Eventual Consistency
CS519 - Cloud Types for Eventual ConsistencyCS519 - Cloud Types for Eventual Consistency
CS519 - Cloud Types for Eventual Consistency
 
05 - Merge Management
05 - Merge Management05 - Merge Management
05 - Merge Management
 
03 - Continuous Integration
03 - Continuous Integration03 - Continuous Integration
03 - Continuous Integration
 
02 - Build and Deployment Management
02 - Build and Deployment Management02 - Build and Deployment Management
02 - Build and Deployment Management
 
01 - Introduction to Version Control
01 - Introduction to Version Control01 - Introduction to Version Control
01 - Introduction to Version Control
 
1.2 introduction to scm - what does version number tell us
1.2   introduction to scm - what does version number tell us1.2   introduction to scm - what does version number tell us
1.2 introduction to scm - what does version number tell us
 
1.1 introduction to scm - xp and cm are chicken-and-egg
1.1   introduction to scm - xp and cm are chicken-and-egg1.1   introduction to scm - xp and cm are chicken-and-egg
1.1 introduction to scm - xp and cm are chicken-and-egg
 
1.0 about software configuration management trainings
1.0   about software configuration management trainings1.0   about software configuration management trainings
1.0 about software configuration management trainings
 
04 - Agile Software Configuration Management
04 - Agile Software Configuration Management04 - Agile Software Configuration Management
04 - Agile Software Configuration Management
 
Breath of life
Breath of lifeBreath of life
Breath of life
 
Организуй свой репозиторий
Организуй свой репозиторийОрганизуй свой репозиторий
Организуй свой репозиторий
 

Agile software configuration management

  • 1. Agile software configuration management Шмаркатюк Сергей, EPAM Systems
  • 2. Повествование 2 От простого к сложному
  • 3. Цель 3 Связь между: Agile-методологиями и практиками конфигурационного менеджмента Инструментами, использующихся практиками конфигурационного менеджмента
  • 4. Какие такие практики? Контроль версий Билд менеджмент Автоматизированные сборки Непрерывная интеграция Релиз менеджмент Управление зависимостями 4
  • 5. Представление 5 Диаграммы потока разработки Ветки Релизы Сборки Теги Слияния Директории Коммиты
  • 6. Simplest scenario 6 Trunk Development mainline Repository directory commits project assets project state Source code changes
  • 7. Простейший сценарий 7 После нескольких последовательных коммитов разработчик желает сделать сборку приложения Зачем? Будем считать что сборка будет результатом реализации функциональных требований (баг/фича) Сборка доступна конечному пользователю: Собирается отдельное десктопное приложение Развертывается веб-приложение Сбор метрик и статистики (интеграционная сборка)
  • 8. Простейший сценарий 8 Затем возникает необходимость сделать релиз Зачем? Релиз – это специальный тип сборки Но имеет специфичные особенности: Полная реализация набора требований Качество Доступность к использованию
  • 9. Простейший сценарий 9 Простейший сценарий - это… …случай, когда описанные шаги не требуют слишком много усилий
  • 10. Простейший сценарий 10 релиз ! /trunk ? ? 2 3 ? 1 ? ? 1.1 1.2 ? 1.0
  • 11. 11 Иногда не все так просто
  • 12. 12 Представим себе … что нужно стабилизировать релиз и обеспечить одновременную разработку следующей версии приложения
  • 13. Ветвление для релиза 13 релиз слияние ! ! /trunk ? ? 2 3 ? ? 1 2.3 2.1 2.2 2.0 ? ? ? /? /1.x 1.1 1.2 1.0 ? ? ?
  • 14. Ветвление для релиза 14 Заметили? Возникает непоследовательность в нумерации версий! Имеет смысл разделить разработку в trunk’eи стабилизацию релиза
  • 15. Ветвление для релиза 15 /trunk 5 6 8 4 7 ? ? 2 3 ? 1 ? ? ? ? ? /? /1.x /? /2.x 1.1 1.2 2.1 1.0 2.0 ? ? ? ? ?
  • 16. Ветвление для релиза 16 Но это еще не всё… Вам может понадобиться стабилизировать релиз в любое время и При этом не прерывать параллельной разработки или стабилизации релиза
  • 17. Ветвление для релиза 17 /? /2.x 2.1 2.0 ? ? /trunk 1.3 2.2 5 6 ? ? 4 ? ? 2 3 ? 1 ? ? ? 0.1 0.2 0.3 0.4 0.5 0.6 /? /1.x 1.1 1.2 1.0 ? ? ?
  • 18. Типы веток 18 Время подумать о типах веток! ?
  • 19. Типы веток 19 /2.x Веткарелиза x.x 2.1 2.0 ? ? /trunk Без типа (просто trunk) 1.3 2.2 x.8 x.7 5 6 x.2 x.5 x.6 ? ? 4 ? ? 2 3 x.1 ? 1 x.3 ? ? ? x.4 Веткарелиза /1.x 1.1 1.2 1.0 ? ? ?
  • 20. Типы веток 20 Несовместимые изменения /2.x Слияние невозможно 2.1 2.0 ? ? /trunk 1.3 2.2 x.8 x.7 5 6 x.2 x.5 x.6 ? ? 4 ? ? 2 3 x.1 ? 1 x.3 ? ? ? x.4 /1.x 1.1 1.2 1.0 ? ? ?
  • 21. Типы веток Несовместимость означает то, что… …слияние изменений не может быть выполнено в родительскую ветку Пример: Глубокий рефакторинг (изменение иерархии директорий/файлов) Серьезное архитектурное/структурное изменение Переписывание приложения или его отдельных частей с нуля 21
  • 22. Типы веток 22 /2.x Ветка релиза /0.2.x 2.1 2.0 ? ? 0.x.x 0.2.1 0.2.0 /trunk Слияние невозможно 1.3 x.5 x.2 ? 4 ? ? 2 3 x.1 ? 1 x.3 ? x.4 0.x.5 0.x.2 0.x.1 0.x.3 0.x.4 /? /1.x.x Ветка релиза /1.x /0.1.x 1.1 1.2 1.0 ? ? ? Ветка поддержки 0.1.1 0.1.2 0.1.0
  • 23. Типы веток.Ветки поддержки и релиза 23 /0.2.x /0.3.x /trunk /1.0.x /0.1.x /1.x.x Ветка релиза Ветка поддержки
  • 24. Типы веток.Ветки поддержки и релиза 24 Допускает слияние с родительской веткой Существует до тех пор, пока не выпущен стабильный релиз Ветки-потомки не разрешены Не допускает слияния с родительской веткой Существует всегда Разрешены ветки-потомки Не разрешены ветки-потомки для поддержки Не рекомендуются слияния с ветками- потомками Ветка поддержки Ветка релиза
  • 25. Типы веток.Экспериментальные ветки 25 /trunk x.2 x.0 x.4 x.6 x.8 x.11 x.7 x.9 x.3 x.1 ? 1 x.5 x.10 Экспериментальная ветка
  • 26. Experimental vs release branch 26 Экспериментальная ветка Не допускает веток-потомков Использует строгое именование. Пример: 1.0.x Использует собственную область значений для нумерации сборок Рекомендуемый подход к слияниям: после каждой сборки/релиза Допускает любое число веток-потомков Правил к именованию не выдвигается. Пример: new_eng_test Разделяет область значений для нумерации сборок с родственными ветками Нет рекомендованного подхода к слияниям Ветка релиза
  • 27. Наследование базыисходного кода 27 /0.2.x 0.x.x /trunk /2.x.x /0.1.x /1.x.x Последняя разработка
  • 28. Наследование базыисходного кода 28 Последняя разработка должна содержаться в trunk
  • 29. Наследование базыисходного кода 29 /3.x.x 4.x.x 3.x.x 2.x.x 1.x.x /trunk /2.x.x /1.x.x
  • 31. SCM в действии 31 1.x.x 2.x.x /trunk PA 1.x.3 1.x.0 2.x.0 A 1.x.1 1.x.4 2.x.1 builds B 1.x.2 1.x.5 2.x.2 /1.x.x AR 1.0.0 BR 1.0.1 RC releases 1.0.2 1.0.3 ST 1.0.4 /1.0.x
  • 34. 34 Где же AGILE?!
  • 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 А главное то, что… … мы теперь знаем как правильно!
  • 38. Контактная информация 38 Skype:sergey.shmarkatyuk E-mail: sergey.shmarkatyuk@gmail.com Web: http://altern.kiev.ua Linkedin: http://www.linkedin.com/in/shmarkatyuk Twitter: @altern Slideshare:http://slideshare.net/altern
  • 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