Концепция непрерывной интеграции только что была интегрирована в мою команду.
Предположим, что мы имеем ветвь интеграции с именем Dev.
Из него получены 3 ветки, по одному для каждого конкретного текущего проекта:
- Проект A
- Проект B
- Проект C
Во-первых, Teamcity настроен на выделенном сервере, и его цели:
Скомпилирует и запускает тесты модулей и интеграции из версий с версией из каждой ветки, включая Dev
Затем, конечно, каждая ветвь проекта (A, B и C) должна быть протестирована в клонированной производственной среде, чтобы UAT можно было выполнить.
Но мне интересно, на какой частоте мы должны развертываться? Каждый раз, когда изменяется исходный код?
Должны ли мы развертывать только Dev, который содержит смесь из трех проектов после слияния каждого из них с ним (что соответствует реальности в следующей производственной версии) или 3 проекта независимо?
Если Dev развернут, потенциально будущие изменения в Dev не должны приниматься во внимание. В самом деле, может возникнуть новый проект, начинающийся с Project D, который не должен быть частью следующей версии. Поэтому принятие Dev для интеграции (UAT) сопряжено с риском, потому что разработчик может недобровольно интегрировать контент Project D, и поэтому среда не будет раскрывать реальность следующего выпуска.
Другое решение: мы не принимаем Dev, но независимо от трех проектов, так что параллельно должна быть 3 клонированных производственных среды?
Если да, UAT не может быть надежным, так как поведение среды интеграции может меняться очень часто...
Концепция непрерывного развертывания для UAT для меня непонятна...