В модели потока Git я должен построить из коммитов слияния в мастер для выпуска?
В моей компании есть сервер CI/Build, который мы используем для тестирования и сборки релизов (а также функции и ветка разработки). В модели ветвления git-потока, когда пришло время выпустить ветку, разработайте и назовите ее (например) release-1.4. Сервер CI/Build затем автоматически построит ветку, и мы развернем его на промежуточном сервере для ручного тестирования интеграции. Как только мы удовлетворены сборкой, мы хотим развернуть ее. Но в модели ветвления git-потока нам нужно сначала объединиться с master и tag. Вопрос в том, нужно ли после этого слияния запускать еще один цикл сборки и тестирования или как?
Кажется странным слияние и добавление тега, заканчивающегося тегом, указывающим на другой (технически) коммит, отличающийся от релиза. Также кажется плохим перестраивать после того, как мы перейдем к мастеру, потому что тогда мы будем вынуждены протестировать эту сборку, чтобы убедиться, что она тоже в порядке.
Варианты, которые я придумал:
- построить в ветке релиза, а затем объединить, перестроить и протестировать в основной ветке
- собрать и протестировать в ветке релиза, затем объединить и поверить, что новая сборка не нужна
- Измените модель потока git, чтобы удалить этап слияния с master, и просто пометьте последний коммит в ветке релиза, которую мы хотим выпустить.
- Что будет потеряно, если не слиться с мастером?
- В этом случае мы могли бы просто развиваться в мастер
2 ответа
Вопрос в том, нужно ли после этого слияния запускать еще один цикл сборки и тестирования или как?
Это слияние не должно нарушать ничего, потому что это должно быть ускоренное слияние, все коммиты на master находятся в ветке релиза. Следовательно, вы не можете создать ошибку на мастер-пост-слиянии, которой не было в ветке релиза.
Технически, да, это не точный коммит, который вы создали, но философия заключается в том, что все в основной ветке находится в производстве. В любое время, если кто-то тянет ветку master, он должен получить текущий производственный код. Вот почему вы не объединяете, а затем строите, тестируете, ждете и исправляете вещи на мастер-релизе.
Сейчас дела не всегда идут гладко. К тому времени, когда релиз будет проверен и готов к отправке, вы можете столкнуться с серьезными производственными ошибками, которые требовали исправления, в этом случае некоторые коммиты были переданы на мастеринг и разработку, но не на ветку релиза. Если это произойдет, я перебазирую (будьте осторожны с этим при работе в команде, слияние безопаснее) ветку релиза при разработке (чтобы догнать исправления) и перестройте заново. Подводя итог, если между временем создания релиза и временем его проверки нет исправлений, перестраивать не нужно.
Если ваше слияние с основной ветвью не ускорено, это означает, что это может привести к новому, непроверенному коду. Даже совершенно очевидные и автоматические слияния могут привести к тому, что код просто не скомпилируется. Итак, если по какой-то причине это не FF слияние, вам нужно проверить. В противном случае это тот же коммит.