У нас есть веб-приложение, для которого у нас есть пара корпоративных клиентов. Недавно мы решили предложить его как приложение SaaS и следовать бережливому подходу (параллельно с нашим корпоративным предложением). Это означает, что у нас есть эксперименты на ходу, которые могут не попасть в производство.
До того, как мы перешли на бережливое производство, нам нравилась следующая стратегия ветвления (я считаю, что она довольно стандартна):
- основной — всегда стабильный
- dev – часто нестабильный (функциональные ветки отрезаются от dev, чтобы новые функции вошли в следующий основной выпуск)
- major_release_x — live (обрез мастера после слияния dev с master, здесь происходит исправление ошибок и слияние обратно с master и dev)
Теперь у нас есть следующее в дополнение к вышеперечисленному, и это не работает так хорошо:
- lean_release_branch — живая (отрезана от major_release_x и содержит эксперименты)
- experiment_x – отрезать major_release_x (здесь мы взламываем функцию вместе, а затем объединяем ее в lean_release_branch)
Теперь наш сценарий заключается в том, что нам нужно выпускать релизы быстро и часто, как того требует подход бережливого производства, и когда мы получаем твердую обратную связь о чем-то произвольном, нам нужно довести это до производства и выпустить как можно скорее (вне ветки lean_release_branch).
Проблема в том, что мы не можем создать функциональную ветку от dev (поскольку она, скорее всего, нестабильна) и мы не можем создать функциональную ветку от lean_release_branch для двух причины:
- он был заражен кодом эксперимента, поэтому это изменение/функция не сможет вернуться к мастеру.
- lean_release_branch всегда должен быть готов к выпуску, поэтому мы не можем быть заняты его тестированием и исправлением (после объединения с ним изменения/функции), если есть критическая проблема, которую необходимо исправить. и выпустил
Кто-нибудь знает лучшую стратегию для нашей установки?