Контроль Версий Сборка Тестирование
Это старая версия документа.
Общий подход
Каждый разработчик имеет свою виртуалку с системой сборки и может выпускать свою именную версию-branch kolko1 и kolko2 и может обновлять на нее виртуалки и клиентов.
Каждый разработчик имеет свою систему тестирования и может тестировать свою именную версию.
В carbon не создается бранч для каждой задачи, есть 2 или более именных branch kolko1 и kolko2 kolko3 для решения текущий задачи, и срочных задач.
Есть центральный сервер сборки и тестирования, на нем выпускаются официальные версии, которые выкладываются на updater.carbonsoft.ru.
Спринт - неделя с обязательной доской и скрамом.
Версия - 4 спринта = 1 месяц, если спринтов меньше, то версия все равно выходит раз в месяц до 10 числа.
Подробности в разделе Agile.
Branch
dima1 / \ master→devel→hotfix→integra → kolko1 → testing \ | \ / | master_hotfix | anton1 | \ / sergey1
Все изменения автоматически попадают слева направо скриптами системы сборки.
Версия testing включает все изменения и все коммиты продукта, и этот бранч тестируется по кругу, чтобы находить кросбаги заранее.
Изменения справа налево делаются через мерджреквест другому программисту.
Изменения из integra в devel и из devel в master делаются или тимлидом или релизменеджером строго по правилам выпуска официальной версии.
Пример:
- kolko разрабатывает фичу в ветке kolko1, это может быть много коммитов и несколько git repo.
- собирает свою полную версию продукта kolko1 и тестирует ее.
- делает мерджреквест в integra на обычного программиста dima.
- dima смотрит все ли понятно и нет ли явных проблем в коде, при необходимости общаются через комментарии gitlab в мерджреквесте.
- dima принимает изменения из kolko1 в integra.
- integra обкатывается на новых клиентах которым нужны новые фичи.
- за месяц накапливаются все новые фишки в ветке integra(обычно это 4 недели = 4 спринта).
- раз в месяц скрипт сборки или руками делается мерджреквест из integra в devel на тимлида(или релиз менеджера)
- после просмотра кода мерджреквест принимается в devel выпускается новая версия devel
- раз в несколько месяцев выпускается master мерджреквестом из devel.
Если есть критичные изменения они вносятся в hotfix и автоматом попадают в integra и ветки разработчиков.
Утром тимлид проверяет и вносит hotfix в devel.
Версии
branch - major.minor.release(build)
Пример: devel 8.3.11(312)
build увеличивается автоматически при сборке.
minor и release увеличивает или тимлид или релиз менеджер по строгим правилам.
- Master - основная масса клиентов. Все, кто работает в продакшене минимум месяц.
- Devel - новые клиенты, не проработавшие 1 месяц, сайте в разделе download и является свежей, отлаженной и протестированной. При выходе следующего master с версией больше этого devel, клиент автоматически переходит на этот master будет иметь те же фичи, но еще более стабильную версию.
- Hotfix - срочные исправления от разработчиков для devel. Для master hotfix обычно выходит черипиками или стабильным форком вида master→master_kolko1
- Interga - ветка для объединения изменений разработчиков. Накапливает изменения за месяц фичи, тюнинг, вебка, не критикал баги и из нее формируется новая официальная версия Devel.
- Testing - это специальная ветка в которую попадают все коммиты разработчиков даже если он не были протестированы. То есть это мердж всех веток всех разработчиков.
Все эти версии собираются и тестируются на сервере CI.
Система сборки
Полностью автоматическая работает по циклу, находит изменения и собирает.