Как настроить тестовый сервер, чтобы одновременно можно было тестировать несколько версий проекта?
Я программист, гитом раньше пользовалась только в более простых случаях. Сейчас понадобилось организовать совместную работу небольшой команды разработчиков на удаленном сервере. Разрабатываем web-приложение. Хотелось бы, чтобы у каждого программиста была своя ветка, даже желательно, чтобы для каждой подзадачи были свои ветки. Но сложность в том, что эти ветки нужно еще и тестировать одновременно. То есть, своя версия приложения должна запускаться на этом же сервере разработки для отладки и тестирования (какой будет при этом URL приложения - не важно). Желательно, но не обязательно, каждая ветка должна работать со своей копией БД.
В одном из своих проектов я видела, что так можно организовать работу. Но не знаю, как это сделать. Прошу хотя бы сориентировать, где почитать про это.
"Тётенька, дайте попить, а то так есть хочется, что аж переночевать негде!"
Как настроить гит для совместной разработки чтобы были тестовые копии для каждой ветки, да ещё и каждая со своей копией базы данных? Вам не кажется, что задача несколько выходит за рамки работы с системой контроля версий ;)
По сути, этот вопрос даже совсем не про гит, а про настройку тестового сервера.
потому что если у нас уже есть ветка проекта, то никто не мешает сделать чекаут этой ветки на тестовом сервере и тестировать.
То есть надо просто сделать тестовый сервер с возможностью на лету создавать виртуальные серверы, просто добавив папку.
ну а дальше там уже можно очень много накрутить - CI, вот это вот всё
MFT, гугли CI/CD, инфы ОЧЕНЬ много. Насчет тестов, в Django, например, при их запуске автоматически создается ПУСТАЯ тестовая БД с полной копией таблиц, связей и т.п. настоящей, в самих тестах создаем нужные данные и тестовые сценарии, а после завершения тестов БД автоматически уничтожается. Думаю для PHP тоже есть что-то подобное. Если нет, то можно самому создать код который перед тестами создает БД, накатывает миграции, а после прогона тестов - уничтожает эту БД.
Спасибо! Под тестами я не имела в виду автоматическое тестирование, не доросли до этого пока. Только вручную проверяем. Но запустить приложение для каждой ветки очень нужно.
MFT, можно задать несколько уточняющих вопросов? Чтоб просто понять контекст (а то без контекста получаются только вот такие словоизвержения типа ответа ниже).
Кто вы этой команде?
Есть ли у вас уже тестовый сервер? Какова его конфигурация (программная)?
Есть ли боевой сервер?
Кто их настраивает (если есть)? Есть ли в команде админ?
В вашем случае было бы удобнее всего работать с докером.
При этом все тесты должны быть автоматическими и запускаться на localhost
Любым CI инструментом настраиваете триггер на коммит или пулл реквест, чтобы собрать проект, сбилдить докер образ, запустить его и внутри запустить автотесты.
Для ручных тестов, конфигурация будет гораздо, гораздо сложнее, тут уже не вопрос на тостер, а масштабная работа.
Да и для ручных тестов подойдёт. Пакуешь сервис в контейнер, отдельным крнтейнером базу данных, отдельным можно какой flyway для миграции. Легче всего связать всё это через docker-compose. Каждый разработчик должен использовать отдельный порт, который будет связан с 80 портом контейнера с сервисом.
Каждый разработчик должен использовать отдельный порт
Вот с этим и начинается проблема, потому что у каждого разработчика может быть несколько веток, и манаджить это все руками - геморой.
Зато такое довольно легко манаджится в Kubernetes/Openshift