19
Конфигурационный менеджмент: организуй свой репозиторий Шмаркатюк Сергей (EPAM Systems)

Организуй свой репозиторий

Embed Size (px)

Citation preview

Page 1: Организуй свой репозиторий

Конфигурационный менеджмент: организуй свой репозиторий

Шмаркатюк Сергей (EPAM Systems)

Page 2: Организуй свой репозиторий

2

Управление конфигурациями

> Управление выпуском (release management)

> Наладка поставок (delivery)

> Организация налаженных процессов разработки

> Согласование способа взаимодействия разных частей программного проекта

Page 3: Организуй свой репозиторий

3

Классификация инструментов управления конфигурациями

Контроль версий (version control)

Непрерывная интеграция (continuous integration)

Управление сборками (build management)

Юнит-тестирование

Анализ покрытия кода

Статический анализ кода

Генерация документации

Page 4: Организуй свой репозиторий

4

Контроль версий(version control)

Используют ВСЕ! Но не всем нравится Кому не нравится, тот изобретает свою СКВ Почему может не нравиться? Из-за слияний (merge) Без слияний жизнь проще Но и без них – никак Можно минимизировать количество слияний Как? Раз: уменьшить количество веток Два: определить то, когда слияния возможны, а

когда - нет

Page 5: Организуй свой репозиторий

5

Гибкая разработка(agile development)

http://agilemanifesto.org

o Итеративность

o Адаптирующийся процесс

o Самоорганизация

o Продуктивность

o Непрерывная поставка

o Изменяющиеся требования

o Внимание к деталям

o Простота

Agile

Page 6: Организуй свой репозиторий

6

Конфигурационные элементы

> Исходный код

> Библиотеки (бинарные файлы)

> Конфигурационные файлы

> Документация

> Файлы ресурсов (изображения, иконки)

> Структура БД

> Данные и словари данных

> Тесты (юнит-тесты)

> Исполняемые файлы и инсталляционные

пакеты

Page 7: Организуй свой репозиторий

7

Элементы идентификации

> Сборки

> Типы сборок

> Релизы

> Типы релизов

> Платформы

> Компоненты (third-party)

> Экспериментальные разработки

Page 8: Организуй свой репозиторий

8

Типы сборок и релизов

Сборки

Релизы

> PA – пре-альфа (тестирование производится разработчиками,

smoke testing)

> A – альфа (тестирование производится тестировщиками)

> B – бета (тестирование производится тестировщиками и пользователями)

> AR – альфа-релиз

> BR – бета-релиз

> RC – релиз-кандидат

> ST – стабильная версия

Page 9: Организуй свой репозиторий

9

Стандартные директории репозитория

Ствол Директория теговДиректория веток

/trunk /branches /tags

/

Репозиторий

Page 10: Организуй свой репозиторий

10

Обобщенная структура директорий проекта[codebase]

svn:externals – библиотеки, компоненты

исходный код

файлы конфигурацииsql-файлы инициализации БДфайлы локализациифайлы ресурсов

файлы сборок, развертывания

спецификации, проектная документация

юнит-тестыутилиты

Page 11: Организуй свой репозиторий

11

Менеджмент веток

Директория веток

/experimental /maintenance /releases

/branches

Page 12: Организуй свой репозиторий

12

Менеджмент тегов

Директория тегов

/builds /releases

/tags

/PA /A /B /AR /BR /RC /ST

Page 13: Организуй свой репозиторий

13

Именование версий

1.2.3_x64

Номер сборки Платформа

Мажорная версия

Минорная версия (номер

итерации)

ТипШаблон

(регулярные выражения)

Релиз (/tags/releases) \d+\.\d+\.\d+(_.*)?

Ветка, ориентированная на релиз (/branches/releases)

\d+\.\d+\.x(_.*)?

Сборка (/tags/builds) \d+\.x\.\d+(_.*)?

Ветка поддержки версии (/branches/maintenance/versions)

\d+\.x\.x

([1-9]\d*)\.([1-9]\d*|[0x])\.([1-9]\d*|[0x])(_.*)?

Page 14: Организуй свой репозиторий

14

Шаблоны именования директорий

Директория базиса исходного кода (codebase)

Шаблон именования директории14

Page 15: Организуй свой репозиторий

15

Правила наследования номеров версий

В ветке поддержки версии: вся ветка N.x.x

Мажорной версии (N.x.x) соответствуют отрезки:

В стволе: от места ответвления предыдущей мажорной версии (N-1) до ответвления текущей версии (N)

1.x.x 2.x.x 3.x.x … N.x.x

1.x.x

2.x.x

3.x.x

N.x.x

Page 16: Организуй свой репозиторий

16

Иерархия типов элементов дерева репозитория

Директория альфа-сборокДиректория бета-сборокДиректория пре-альфа сборокДиректория альфа-релизовДиректория бета-релизовДиректория кандидат-релизов

Директория стабильных релизов

Директория программного проекта в репозитории исходного кода

Директория тегов

Ствол (основное направление разработки)

Директория сборок

Директория релизов

Директория веток

Директория веток, соответствующих экспериментальным разработкам

Директория веток, соответствующих длительным разработкам (ветки поддержки)

Директори веток поддержки версий

Директория веток платформ

Директория веток, ориентированных на релиз

Page 17: Организуй свой репозиторий

17

Организация интеграции релизов и сборок

trunk

PA

A

B

/tags/builds

AR

BR

RC

ST

/tags/releases

1.x.0

1.x.1

1.x.2

1.x.3

2.x.1

1.x.5

1.x.4

2.x.2

2.x.0

/branches/maintenance/versions/1.x.x

/branches/releases/1.0.x

1.0.1

1.0.2 1.0.3

1.0.0

1.0.4

1.x.x 2.x.x

Page 18: Организуй свой репозиторий

18

trunkPA

A

B

/tags/builds

AR

BR

RC

ST

/tags/releases

1.x.0

1.x.1

1.x.2

1.x.3

2.x.1

1.x.5

1.x.4

2.x.2

2.x.0

/branches/maintenance/versions/1.x.x

/branches/releases/1.0.x

1.0.1

1.0.2 1.0.3

1.0.0

1.0.4

1 12 39 52 73 79 93 112 126 139 155 170 193 201 215 230140

Зависимость содержимого директорий репозитория от номера ревизии1.x.x 2.x.x

Номера ревизий

Page 19: Организуй свой репозиторий

19

А ТЫорганизовал

свой репозиторий?