Тестовый сервер + Боевой сервер + Git + TeamCity как правильно организовать работу?
Здравствуйте!
Поделитесь опытом кто как настраивает тестовую среду для веб разработки.
У нас сейчас так:
Проект это Бэк WebAPI + Фронт SPA (MVC)
Есть боевой сервер.
Есть тестовый сервер.
Есть боевая БД, к ней подключаются и боевой и тестовый сервер.
На гите есть несколько веток. Ветка мастер это боевая ветка и при каком либо изменении TeamCity собирает проект и публикует его на боевом сервере.
Есть на гите также ветка разработчика, при изменении в которой TeamCity собирает проект и публикует его на тестовом сервере.
Всё бы ничего но есть одна загвоздка. На фронте в одном из файлов приписан IP API сервера. И для тестовой и боевой сборки он отличается портом.
И каждый раз, как нужно закоммитить изменения в ветке мастер приходится руками менять этот IP, что неудобно.
Так вот, как можно автоматизировать этот процесс, или организовать работу, чтоб избавиться от ручной корректировки файла?
Есть боевая БД, к ней подключаются и боевой и тестовый сервер.
Планета в опасносте!
На фронте в одном из файлов приписан IP API сервера. И для тестовой и боевой сборки он отличается портом.
Миллион решений - от настройки MSBuild и/или T4-шаблона конфига на сборки Debug/Release, до специального степа TeamCity, вызывающего скрипт-реплейсер, когда просят деплой/собрать пакет.
1. Выполнение сборки должно параметризоваться тем, что зависит от окружения, в данном случае IP API
2. Передача параметра может осуществляться по-разному: через командную строку, конфигурационный файл и т.п.
3. Сценарий сборки должен передавать параметр (подкладывать конфиг) соответствующий ветке.
Есть 100500 способов как это реализовать, вам должно быть виднее как лучше. Главное тут - выносите все параметры окружения из приложения: адреса, порты, пути и т.п.
Я так понимаю в зависимости от конфигурации сборки, TC может подставлять те или иные переменные в файл настроек и уже публиковать проект с измененными настройками?
Где можно почитать как это можно сделать, в офф документации что то не могу найти про это?