Как вы храните изменения отдельно и в разных средах развертывания в git?
На моем рабочем месте мы пытаемся разработать рабочий процесс, основанный на Git, для обработки наших развертываний и изменений в коде.
У нас есть веб-приложение Java EE и 3 среды развертывания (Test, QA и Production). У нас также есть экземпляр Jenkins CI для обработки сборок и развертываний.
Когда вносятся изменения в код приложения (в филиалах), мы должны иметь возможность выбирать, какие из них будут повышены до QA и Production. Некоторые могут попасть в QA, а затем никогда не пойдут в производство.
Мы также должны быть защищены от случайного включения кода всех остальных в вашу ветку при продвижении и слиянии.
"Продвижение" веток также должно быть автоматизировано - таким образом, чтобы аналитик выбрал ветку или набор изменений, а затем jenkins или какой-либо другой скрипт выполнил бы фактическое слияние и развертывание. Я вижу конфликты слияний, являющиеся проблемой здесь...
Как бы вы порекомендовали настроить (а) Git-репозиторий (-ы) для удовлетворения этих требований?
1 ответ
Как я упоминал в разделе " Продвижение кода с помощью Git ", не забывайте, что ветки - не единственный способ изолировать усилия разработчиков (например, продвижение в среде).
У вас есть и сами репозитории git, и вы можете назначить git-репо определенной роли (репозиторий "Test", репозиторий "QA " и т. Д.)
В сочетании с Gitolite вы можете защитить эти репозитории от доступа пользователей, которые не должны напрямую переходить к определенной стадии жизненного цикла разработки.
Также в сочетании с защищенной фиксацией вы можете перейти к тестовому репо, которое бы:
- отклонить ваш коммит, если он не прошел компиляцию и / или определенные юнит-тесты
- или примите его и автоматически отправьте в репозиторий для проверки.