2.x - Reuters Insider

advertisement
AGILE SOFTWARE
CONFIGURATION
MANAGEMENT
ШМАРКАТЮК СЕРГЕЙ, 04-11-2010
𝑠𝑐𝑜𝑝𝑒 → ∞
2
ОБЩИЕ АСПЕКТЫ
3
ЦЕЛЬ
СВЯЗЬ МЕЖДУ:
1.
AGILE-МЕТОДОЛОГИЯМИ И
ПРАКТИКАМИ КОНФИГУРАЦИОННОГО
МЕНЕДЖМЕНТА
2.
ИНСТРУМЕНТАМИ, ИСПОЛЬЗУЮЩИХСЯ
ПРАКТИКАМИ КОНФИГУРАЦИОННОГО
МЕНЕДЖМЕНТА
4
КАКИЕ ТАКИЕ ПРАКТИКИ?
 Контроль
 Билд
версий
менеджмент
 Автоматизированные сборки
 Непрерывная интеграция
 Релиз
менеджмент
 Управление
зависимостями
5
ПОВЕСТВОВАНИЕ
ОТ ПРОСТОГО К СЛОЖНОМУ…
6
ПОВЕСТВОВАНИЕ
…С ОДНОВРЕМЕННЫМ
УСТРАНЕНИЕМ ВОЗНИКАЮЩИХ
ПРОТИВОРЕЧИЙ
7
ПРЕДСТАВЛЕНИЕ
ДИАГРАММЫ ПОТОКА РАЗРАБОТКИ
8
ПРЕДСТАВЛЕНИЕ
ДИАГРАММЫ ПОТОКА РАЗРАБОТКИ
9
ПРЕДСТАВЛЕНИЕ
ДИАГРАММЫ ПОТОКА РАЗРАБОТКИ
10
ПРЕДСТАВЛЕНИЕ
ДИАГРАММЫ ПОТОКА РАЗРАБОТКИ
11
ПРЕДСТАВЛЕНИЕ
ДИАГРАММЫ ПОТОКА РАЗРАБОТКИ
Ветки
Релизы
Сборки
Теги
Слияния
Директории
Коммиты
12
ПОХОЖИЕ
ИДЕИ
1. Контроль версий для нескольких agile-команд:
http://www.infoq.com/articles/agile-version-control
2. Паттерны конфигрурационного менеджмента:
http://www.cmcrossroads.com/bradapp/acme/branching/
13
ПРОСТЕЙШИЙ СЦЕНАРИЙ
15
«Релиз за два дня»
ПРОСТЕЙШИЙ СЦЕНАРИЙ
 После
нескольких последовательных коммитов
разработчик желает сделать сборку
приложения
 Зачем?
1. Будем считать что сборка будет результатом
реализации функциональных требований
(баг/фича)
2. Сборка доступна конечному пользователю:



Собирается отдельное десктопное приложение
Развертывается веб-приложение
Сбор метрик и статистики (интеграционная сборка)
16
ПРОСТЕЙШИЙ СЦЕНАРИЙ
 Затем
возникает необходимость сделать
релиз
 Зачем?
 Релиз – это специальный тип сборки
 Но имеет специфичные особенности:
Полная реализация набора требований
2. Качество
3. Доступность к использованию
1.
17
ПРОСТЕЙШИЙ СЦЕНАРИЙ
ПРОСТЕЙШИЙ СЦЕНАРИЙ - ЭТО…
…СЛУЧАЙ, КОГДА ОПИСАННЫЕ ШАГИ НЕ ТРЕБУЮТ
СЛИШКОМ МНОГО УСИЛИЙ
«РЕЛИЗ ЗА ДВА ДНЯ»
18
ПРОСТЕЙШИЙ СЦЕНАРИЙ
релиз
!
1?
2?
3?
/trunk
1.0
?
1.1
?
1.2
?
19
ПРИМЕР ЧУТЬ ПОСЛОЖНЕЕ
20
Расширяем scope
ПРЕДСТАВИМ СЕБЕ …
ЧТО НУЖНО СТАБИЛИЗИРОВАТЬ РЕЛИЗ
и
ОБЕСПЕЧИТЬ ОДНОВРЕМЕННУЮ РАЗРАБОТКУ
СЛЕДУЮЩЕЙ ВЕРСИИ ПРИЛОЖЕНИЯ
21
ВЕТВЛЕНИЕ ДЛЯ РЕЛИЗА
1?
2?
3?
релиз
слияние
!
!
2.0
?
2.1
?
2.2
?
/trunk
2.3
?
/?
/1.x
22
1.0
?
1.1
?
1.2
?
ВЕТВЛЕНИЕ ДЛЯ РЕЛИЗА
ЗАМЕТИЛИ?
ВОЗНИКАЕТ НЕПОСЛЕДОВАТЕЛЬНОСТЬ В НУМЕРАЦИИ
ВЕРСИЙ!
ИМЕЕТ СМЫСЛ РАЗДЕЛИТЬ РАЗРАБОТКУ В TRUNK’E И
СТАБИЛИЗАЦИЮ РЕЛИЗА
23
ВЕТВЛЕНИЕ ДЛЯ РЕЛИЗА
/trunk
1?
2?
3?
4?
5?
6?
7?
8?
/?
/1.x
/2.x
/?
1.0
?
1.1
?
1.2
?
2.0
?
2.1
?
24
ПРИМЕР ЕЩЕ СЛОЖНЕЕ
25
Параллельное ветвление
ВЕТВЛЕНИЕ ДЛЯ РЕЛИЗА
ВАМ МОЖЕТ ПОНАДОБИТЬСЯ СТАБИЛИЗИРОВАТЬ
РЕЛИЗ В ЛЮБОЕ ВРЕМЯ
и
ПРИ ЭТОМ НЕ ПРЕРЫВАТЬ ПАРАЛЛЕЛЬНОЙ
РАЗРАБОТКИ ИЛИ СТАБИЛИЗАЦИИ РЕЛИЗА
26
ВЕТВЛЕНИЕ
ДЛЯ РЕЛИЗА
/2.x
/?
2.1
?
2.0
?
/trunk
1?
2?
3?
4?
5?
6?
0.1
0.2
0.3
0.4
0.5
0.6
1.3
?
2.2
?
/?
/1.x
1.0
?
1.1
?
1.2
?
27
ТИПЫ ВЕТОК
Время подумать о типах веток!
?
28
ТИПЫ ВЕТОК
/2.x
Ветка релиза
x.x
2.1
?
2.0
?
/trunk
x.1
1?
x.2
2?
3?
x.3
5?
x.5
4?
x.4
Ветка релиза
6?
x.6
1.3
x.7
?
2.2
x.8
?
Без типа
(просто trunk)
/1.x
1.0
?
1.1
?
1.2
?
29
ПРИМЕР ТОГО, КОГДА
ВЕТКИ НАЧИНАЮТ РАСТИ
САМИ ПО СЕБЕ
30
ТИПЫ ВЕТОК
Несовместимые изменения
/2.x
Слияние
невозможно
2.1
?
2.0
?
/trunk
x.1
1?
x.2
2?
3?
x.3
5?
x.5
4?
x.4
1.3
x.7
?
6?
x.6
2.2
x.8
?
/1.x
31
1.0
?
1.1
?
1.2
?
ТИПЫ ВЕТОК
 Несовместимость

означает то, что…
…слияние изменений не может быть
выполнено в родительскую ветку
 Пример:
Глубокий рефакторинг (изменение
иерархии директорий/файлов)
 Серьезное архитектурное/структурное
изменение
 Переписывание приложения или
его отдельных частей с нуля

32
ТИПЫ ВЕТОК
Ветка релиза
2.0
?
2.1
?
/2.x
/0.2.x
0.x.x
0.2.0 0.2.1
/trunk
x.1
1?
x.2
2?
3?
x.3
0.x.1 0.x.2 0.x.3
4?
x.4
1.3
x.5
?
0.x.4
0.x.5
Ветка релиза
/1.x
/0.1.x
1.0
?
1.1
?
Слияние
невозможно
/?
/1.x.x
1.2
?
0.1.0 0.1.1 0.1.2
Ветка
поддержки
33
ТИПЫ ВЕТОК.
ВЕТКИ ПОДДЕРЖКИ И РЕЛИЗА
/0.2.x
/0.3.x
/trunk
/1.0.x
/0.1.x
/1.x.x
Ветка релиза
34
Ветка поддержки
ТИПЫ ВЕТОК.
ВЕТКИ ПОДДЕРЖКИ И РЕЛИЗА
Ветка поддержки
Ветка релиза
Допускает слияние с
родительской веткой
 Существует до тех пор,
пока не выпущен
стабильный релиз

Не допускает слияния с
родительской веткой
 Существует всегда

Разрешены ветки-потомки
 Не разрешены веткипотомки для поддержки
 Не рекомендуются
слияния с веткамипотомками


Ветки-потомки не
разрешены
35
ТИПЫ ВЕТОК.
ЭКСПЕРИМЕНТАЛЬНЫЕ ВЕТКИ
/trunk
x.2
x.0
x.4
x.6
x.8
x.11
x.1
1?
x.3
x.5
x.7
x.9
x.10
Экспериментальная ветка
36
EXPERIMENTAL VS RELEASE
BRANCH
Ветка релиза
Не допускает ветокпотомков
 Использует строгое
именование. Пример:

Экспериментальная ветка
Допускает любое число
веток-потомков
 Правил к именованию не
выдвигается. Пример:

1.0.x
Использует
собственную область
значений для
нумерации сборок
 Рекомендуемый подход
к слияниям: после
каждой сборки/релиза

new_eng_test
Разделяет область
значений для нумерации
сборок с родственными
ветками
 Нет рекомендованного
подхода к слияниям

37
НАСЛЕДОВАНИЕ БАЗЫ
ИСХОДНОГО КОДА
/0.2.x
0.x.x
/trunk
/2.x.x
/0.1.x
/1.x.x
Последняя разработка
38
НАСЛЕДОВАНИЕ БАЗЫ
ИСХОДНОГО КОДА
Последняя разработка должна
содержаться в trunk
39
НАСЛЕДОВАНИЕ БАЗЫ
ИСХОДНОГО КОДА
/3.x.x
1.x.x
2.x.x
3.x.x
4.x.x
/trunk
/2.x.x
/1.x.x
40
ТИПЫ СБОРОК
builds
pre-alpha
(PA)
alpha (A)
beta (B)
releases
alpha
release
(AR)
beta
release
(BR)
release
candidate
(RC)
stable (ST)
41
SCM В ДЕЙСТВИИ
1.x.x
2.x.x
/trunk
PA
A
B
1.x.3
1.x.0
1.x.1
2.x.0
1.x.4
1.x.2
2.x.1
1.x.5
builds
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
42
SCRUM И SCM
/trunk
PA/A
1.x.0
1.x.1
1.x.2
1.x.3
1.0.0
1.0.1
demo
AR/BR
user stories
/1.0.x
sprint backlog
44
ИЕРАРХИЯ ДИРЕКТОРИЙ
РЕПОЗИТОРИЯ
45
ИЕРАРХИЯ ДИРЕКТОРИЙ
ПРОЕКТ
46
ИЕРАРХИЯ ДИРЕКТОРИЙ
ТЕГИ
47
ИЕРАРХИЯ ДИРЕКТОРИЙ
ВЕТКИ ПОДДЕРЖКИ
48
1.x.x
2.x.x
trunk
PA
1.x.0
1.x.3
1.x.1
A
2.x.0
1.x.4
2.x.1
/tags/builds
1.x.2
B
1.x.5
2.x.2
/branches/maintenance/versions/1.x.x
1.0.0
AR
1.0.1
BR
1.0.2
RC
1.0.3
/tags/releases
1.0.4
ST
/branches/releases/1.0.x
Номера
1
ревизий
12
39
52
73
79
93
112 126 139 140
155
170
193
201
215
230
49
Заключительное слово
Спасибо за внимание!
51
Download