В настоящее время я использую бэкэнд в производстве и хочу изменить нашу текущую настройку, чтобы использовать Docker для развертывания и инструмент CI для тестирования.
Прямо сейчас у меня есть репозиторий BitBucket с двумя основными ветвями «разработка» и «мастер» и два отдельных сервера для разработки и производства, которые извлекают код из соответствующих ветвей через сценарий оболочки, который я запускаю локально. Таким образом, я тестирую изменения вручную в полностью изолированной среде с сервером разработки и базой данных разработчиков перед объединением в master и развертыванием в производственной среде.
git Repository dev-server prod-server
| +----------+ +----------+
|-- develop | | | |
|-- master | pulls | | pulls |
| develop | | master |
| | | |
+----------+ +----------+
Я хочу изменить это, написав тесты и используя Docker и инструмент CI, такой как Drone (это бэкэнд Go) или Jenkins, но я понятия не имею, как все это работает вместе. Я уже достаточно много читал о Docker, и в большинстве руководств предполагается, что вы разрабатываете локально, а затем развертываете контейнер непосредственно на производственном сервере. Также я предполагаю, что инструмент CI должен быть расположен на сервере разработки?
Может ли кто-нибудь объяснить мне, как возможные потоки будут выглядеть в моем сценарии?
Пример: я вношу изменения локально, а затем нажимаю "разработать". Сервер разработки имеет ловушку git, которая распознает push и каким-то образом запускает CI-сервер, который запускает тесты. Если тесты пройдут МОГ объединить разработку с мастером (это сейчас компакт-диск?), что снова запускает перехватчик на производственном сервере, который создает новый образ и запускает контейнер. Это правильно? Также на каком сервере сейчас размещается репозиторий докеров?