Имею следующую конфигурацию проекта:
1. В папке /mysite на локальном компьютере;
2. В папке test.example.com - на сервере (VPS)
3. В соседней папке "боевой" сайт exampe.com
На test.example.com проект сливается из репы.
Развёртывания test.example.com на example.com пока нет - об этом и вопрос.
Как лучше сделать — прямым копированием папки или через репу (имеет ли смысл использовать для этого ещё одну репу )?
test.example.com работает с "боевой" базой данных, это даёт возможность на деле проверить изменения, сделанные на локали и слитые через репу на тестовый сайт.
Но тут есть проблема: например, изображения, загруженные через тестовый сервер грузятся в его же папку (с относительными путями), соотв. на "боевом" они не показываются. Это говорит о том, что папку с изображениями надо копировать ручками. Или весь тестовый сайт сливать в дополнительную репу, а из репы разворачивать в папке example.com "боевой", уже собранный сайт? Как лучше поступить, посоветуйте, братцы?
Я так понимаю, что пересекаются два интереса: первый — работа над кодом/дизайном сайта и обновление оного, второй - возможность использовать новый функционал тестового сайта для загрузки материалов на сервер, с последующим обновлением кода/дизайна (т.е. для конечного юзера сразу появляется и новый функционал и материалы). И похоже, уши проблемы торчат на перекрёстке этих интересов. Как разрулить ситуацию?
Neoline: Копируя ручками далеко не уедешь. За этим общественности вопрос и был задан, чтобы опытом-советом поделились, чтобы навыки приобрести. Я не жду разжёванной морковки, если кто-то расскажет про свой опыт, уже будет не плохо.
Если уж так хочется держать тест на проде и боевых данным:
1. Папки с загружаемым контентом заменить на симлинки в общее хранилище. Тогда они будут везде доступны.
2. "боевую" версию выкладывать из гита конечно. Напишите маленький скриптец который сразу все делает - обновляет исходники, зависимости(composer/pip что у вас там) ну и накатывает миграции. Ну или используйте любой софт для деплоя.
3. На тестовую версию будет удобно сделать вытовыкат изменений с каждым коммитом. Используйте вебхуки для этого.
1.
2. Получается ещё одна репа для боевой выкладки. Итого: первая - тестовая реализация, вторая - продакшн. Так? Для деплоя что порекомендуете? Rocketeer справится? rocketeer.autopergamene.eu/#/docs/rocketeer/README
3. Не понял, что такое "вытовыкат", но мысль понял - сделать автодеплой на тест с локали через репу, настроив вебхуки, оно?
usermuser: 1 пропустил: общее хранилище уже есть, там пути к файлам абсолютные, всё кажет как надо. Но есть и локальная папка с ресурсами (одна админка на два сайта), для каждого сайта отдельно, а потому и гружу для этого случая с относительными путями. С симлинками большого дела не имел, а потому не понятно, как они поведут себя в репе и на локали.
1. Почитайте про симлинки. Как бы у вас там хитро не было с загружаемыми файлами - вам поможет.
2. Нет репа одна. Даже ветка там одна. Просто в тест код автоматически выливается и там вы его проверяете на боевых БД. Получается такая beta-версия вашего сайта. Когда решаете все это запустить на основном - вручную запускаете деплой на прод.
3. Опечатался - автовыкат имел ввиду. И да по веб хукам.
Цикл разработки получится таким: Пишите код на локале -> Коммитите код в реп -> сразу проверяете что там на тесте -> доделывается что ни так на локеле -> Повторяете 3 последних шага до готовности -> деплой на прод.
Еще как вариант - держать на тесте текущую ветку в которой идет разработка. Когда все готово - мержить ее в мастер и деплоить на прод. Это удобно если параллельно разрабатываете разные фичи в разных ветках.