- 21, Oct 2024
- #1
В постоянно развивающемся веб-проекте (не продукте) мы в настоящее время имеем следующую стратегию ветвления, примерно основанную на поток git:
- ветка разработки: последняя рабочая версия
- основная ветка: версия, которая будет выпущена/выпущенная версия
- ветки функций: функции в разработке
- ветки исправлений: срочные исправления ошибок в выпущенной версии
Владелец доступен только для чтения, обновляется посредством запросов на извлечение из развивать или ветки исправлений. Каждое обновление приводит к созданию и развертыванию кандидата на выпуск в промежуточной системе. Кандидаты на выпуск развертываются в производство после утверждения вручную.
Функциональные ветки создаются на основе развиватьили из последнего коммита, который был объединен с мастером. Запрос на извлечение из функциональной ветки для разработки создается и развертывается в бесплатной системе тестирования, где выполняются интеграционные и приемочные тесты (автоматические и ручные). После успешного тестирования и проверки PR объединяется и становится частью следующего выпуска (т. е. объединяется из разработки в мастер-версию).
Моя цель
Я хотел бы упростить это и избавиться от ветки разработки. Ветка разработки имеет в основном исторические причины, и поскольку это всегда успешно протестированная версия, я думаю, нет необходимости хранить ее отдельно от основной. Его удаление также упростит процесс выпуска, поскольку больше не требуется никакого дополнительного слияния.
У меня есть следующие ограничения:
- выпуски запланированы и не должны быть полностью автоматизированы.
- хотя ветки функций обычно недолговечны, некоторые остаются неслитыми в течение нескольких недель (например, редизайн), но их также необходимо протестировать (в настоящее время открыты запросы на включение для разработки)
- иногда одну функцию следует выпустить за пределами обычного выпуска, фактически превращая ее в исправление. Используя текущую стратегию, я могу перебазировать ветку функций и объединить ее непосредственно с основной.
- бывает и так, что нам нужно придержать функции после неудачных приемочных испытаний с внешними системами на стадии разработки.
Где я не уверен насчет перехода:
- в настоящее время я создаю запросы на включение для тестирования и коммиты слияния для выпусков. Могу ли я объединить это?
- как быть с исправлениями, когда мастер опережает последний релиз. Должен ли я создавать и развертывать выпуски непосредственно из веток исправлений?
- Есть ли разумный способ справиться с функциями, которые следует исключить из выпуска после того, как они уже были объединены? Является ли отдельная ветка разработки преимуществом в таких случаях? В большинстве случаев я все равно откатываю и откатываю коммиты вручную.
#git #release-management #builds #branch