Как вы храните изменения отдельно и в разных средах развертывания в git?

На моем рабочем месте мы пытаемся разработать рабочий процесс, основанный на Git, для обработки наших развертываний и изменений в коде.

У нас есть веб-приложение Java EE и 3 среды развертывания (Test, QA и Production). У нас также есть экземпляр Jenkins CI для обработки сборок и развертываний.

Когда вносятся изменения в код приложения (в филиалах), мы должны иметь возможность выбирать, какие из них будут повышены до QA и Production. Некоторые могут попасть в QA, а затем никогда не пойдут в производство.

Мы также должны быть защищены от случайного включения кода всех остальных в вашу ветку при продвижении и слиянии.

"Продвижение" веток также должно быть автоматизировано - таким образом, чтобы аналитик выбрал ветку или набор изменений, а затем jenkins или какой-либо другой скрипт выполнил бы фактическое слияние и развертывание. Я вижу конфликты слияний, являющиеся проблемой здесь...

Как бы вы порекомендовали настроить (а) Git-репозиторий (-ы) для удовлетворения этих требований?

1 ответ

Как я упоминал в разделе " Продвижение кода с помощью Git ", не забывайте, что ветки - не единственный способ изолировать усилия разработчиков (например, продвижение в среде).

У вас есть и сами репозитории git, и вы можете назначить git-репо определенной роли (репозиторий "Test", репозиторий "QA " и т. Д.)

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

Также в сочетании с защищенной фиксацией вы можете перейти к тестовому репо, которое бы:

  • отклонить ваш коммит, если он не прошел компиляцию и / или определенные юнит-тесты
  • или примите его и автоматически отправьте в репозиторий для проверки.
Другие вопросы по тегам