Создайте один раз, разверните многие, используя gitflow и gitversion

Gitflow соответствует нашим потребностям, и, похоже, даритель подходит Gitflow. Но есть одна вещь, которую я не до конца понимаю. Позвольте мне объяснить, что беспокоит меня.

  1. Мы работаем над некоторыми функциями в ветке разработки - все пакеты помечены так: 1.3.0-unstable.1, 1.3.0-unstable.2 и так далее.
  2. Каждый пакет проходит через конвейер - dev, test, uat, prod.
  3. Итак, когда dev готов и все хорошо, в соответствии с gitflow мы запускаем ветку release.
  4. Никаких изменений не требуется вносить в релиз, мы заканчиваем это сразу - ветка релиза объединяется с мастером и с разработкой.
  5. Сервер сборки создает еще один пакет 1.3.0, который готов к работе.

Как добиться сборки один раз, развернуть много здесь? Согласно всем правилам, нам нужно продвигать 1.3.0-unstable.x в prod env, потому что именно этот пакет был протестирован в dev и test, но версия выглядит немного странно для prod, не так ли? Когда 1.3.0, пришедшая из основной ветки, нигде не была развернута.

Вопрос похож на этот: в модели потока git я должен собрать из коммита слияния в master для выпуска?

Ответ не очень удовлетворителен:

  1. Мы делаем -no-ff при слиянии с мастером
  2. Это все еще другой пакет

1 ответ

Решение

Позвольте мне ответить на этот вопрос сам. Мы подошли к моменту, когда поняли, что поддержка нескольких версий / нескольких сред с использованием gitflow - это огромная нагрузка. Поэтому мы искали что-то более простое - GitHub. Конечно, это не полностью решило исходную проблему (построить один раз - развернуть много) для нас, но это то, как мы частично решили ее.

Наш трубопровод изменился

от: dev -> test -> uat -> prod

: dev -> test, а затем uat -> prod

Итак, как я уже говорил, мы используем поток GitHub. Всякий раз, когда мы работаем над новой функцией, сначала - мы создаем имя элемента ветки от последнего мастера. Каждая сборка из этой ветки имеет версии, как это 1.3.0-featurename.1, 1.3.0-featurename.2 и так далее.

Как только разработчик заканчивает реализацию и выполняет все проверки dev, эти точные двоичные файлы отправляются в тестовую среду для QA. После того, как QA ребята подписывают эту версию, мы будем рады протолкнуть ее через наш второй конвейер uat -> prod. Мы объединяем запрос на извлечение для ветви имени элемента и версии сборки, которую мы получаем впоследствии, скажем: 1.3.1 отправляется в среду uat. Как только он подписан, мы добавляем точно такие же двоичные файлы в среду prod.

Если в то же время разрабатывалось несколько ветвей функций, следующую версию, которую мы отправляем в тестовую среду, предполагается перебазировать поверх последнего мастера и снова через конвейер.

Другие вопросы по тегам