Ситуация:
- Разрабатываем несколько веб-проектов на php/mysql/vue/js, репозитории в Bitbacket, деплой через teamcity
- Практически нет разделения на ветки
- Нет авто тестов
- докер не используется
- команда маленькая, выделенного qa нет
Задача:
- Перевести разработку в ветки
- Для каждой ветки автоматически создавать отдельное веб-окружение в тестовой среде для визуального тестирования
- Внедрить автоматические тесты и запускать их для всех коммитов
Решение:
В TeamCity сделать деплой, который при каждом коммите:
- Определяет в какую ветку был коммит
- Скачивает эту ветку из репозитория
- Запускает тестовое окружение через docker для этой ветки на домене: branch-name.test.domain.com (если такое окружение уже запущено, то убивает старое и запускает новое)
- Выполняет тесты и, соответственно, сигнализирует о успешности их выполнения (или отдельными командами через тимсити, или скриптом в докерфайле)
Максим Федоров, почему проще самому залить ветку? Это же ручные телодвижения постоянно для тестера: залить одну ветку, залить базу, потестить, потом залить другую и тд. Имхо проще когда это все автоматом и тестер просто заходит по ссылке.
Этож к каждому поддомену пароли на сайте вводить и в кажлый раз к новой бд подключаться
у нормального тестера с этим нет ни каких проблем. Нормальная хранилка паролей (в команде вообще используют расшаренную) + нормальный клиент к базе с сохранением реквизитов решает все проблемы. Так что это нормальная практика.
А вот "ему проще на своем всегда постоянном домене вертку нужную залить и тестить" не проще потому что есть база и её развертывание зачастую бывает длительным процессом (особенно на фултесте). Поэтому поддомены на каждую ветку (PR) наиболее правильный вариант потому что позволяет оперативно переключаться между задачами и не ждать развертывания контура.