Как правильно организовать рабочий workflow для веб-разработки?
Имеется веб-приложение, на рабочем ноуте поднят vagrant, на VPS 2 версии сайта: дев. и продакшн. Как правильно организовать работу между этими версиями, чтобы всё было "синхронизировано"? Сейчас заливаю всё по ssh, что очень неудобно, когда дело касается мелких и срочных правок рабочей версии (то есть на локальном сервере устаревшая информация по сравнению с боевым). Вся проблема в том, что везде настроены разные окружения, разные конфиги (пароли от бд и так далее). Как я это вижу:
1. Делаю новую фичу / правлю баг на локальном сервере
2. Заливаю на дев, тестирую
3. Если всё ок, то заливаю на боевой сервер
Жду рекомендаций и ваших советов, заранее спасибо.
У меня так, проект на локальном сервере (git), далее на vps дев версия(git) и продакшн,
при заливки правок, отправляю всё на битбакет с локального сервера, далее через phing сливаю правки с битбакета в дев версию, тестирую если всё ок, то через ссш посредством rsync синхронизирую дев версию и продакшн. В итоге для синхронизации локальной версии с продакшн всего 2 команды, не учитывая команды гита
На всех трех версиях, также разное окружение, но настроено всё таким образом что конфиги цепляются в зависимости от того где расположен проект, если локальная версия то одни, на дев и продакшн соответственно другие
Храни код в репозитории, например на Bitbucket. Конфиги в репозитории хранить не надо.
Настрой деплой, для этого есть множество инструментов, например: magephp.com capistranorb.com deployer.org
Дальше все будет просто: пушим изменения в репозиторий, запускаем деплой в нужное место.