Как при помощи CI вы тестируете сайты?

Есть сайт на PHP, Ruby или любая веб технология.

Окружение для разработки сайта разработано на ansible (это не столь важно), и разворачивается на development машине в одно нажатие кнопки (используя vagrant), так же есть инструкции для разворачивание production.

Хочу сделать Continious Integration и встал вопрос о том, как тестировать код.
Для этого надо запустить phpunit, rake или аналог.
Нужно ли перед запуском перенастраивать через ansible среду выполнения?
И как настроить систему так, чтобы возможна было проверка нескольких коммитов одновременно.

Усложним задачу: используется selenium. Следовательно нужно под каждый инстанс использовать свою виртуалку, внутри которой есть GUI. Их динамически создавать по образу, или сразу развернуть количество виртуалок по числу агентов?

Сейчас используем SaaS в котором используется вариант без selenium.
С использованием Selenium захотелось соскочить с иглы SaaS.
Выбор CI: Jenkins или TeamCity.
  • Вопрос задан
  • 1494 просмотра
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Очень любопытный вопрос. Самому интересно как люди делают дела.

Нужно ли перед запуском перенастраивать через ansible среду выполнения?


Нужно или нет - зависит от того менялось ли окружение. Я обычно просто запускаю vagrant up --provision. Провиженинг занимает секунд 20-30 (если ничего не поменялось, всему виной apt-get update, но с ansible 2 эти 10 секунд которые тратятся на update индекса пакетов исчезнет, хотя похоже что я раньше на docker перейду полностью).

И как настроить систему так, чтобы возможна было проверка нескольких коммитов одновременно.

Я проверяю только последний коммит для ветки. То есть по сути это решает проблему с несколькими коммитами (проверяем мы только то что изменилось с последнего запуска CI-ки).

Следовательно нужно под каждый инстанс использовать свою виртуалку, внутри которой есть GUI

не GUI а X-ы, это чуть другое. Опять же можно извратиться и поставить сам силениум на хост, а управлять им из вагранта... но это сложно как по мне.

Что до инстансов - я использую только один инстанс на джобу.

Их динамически создавать по образу, или сразу развернуть количество виртуалок по числу агентов?

Ну как бы... они динамически и будут создаваться если у тебя джоба будет постоянно прыгать с агента на агент. Обычно они не прыгают так часто. vagrant up --provision решает все проблемы в плане развертывания виртуалки. В этом плане перспектива миграции на Docker мне очень сильно нравится.

Куда более интересный вопрос - управление прекондишеном для UI тестов, то есть это либо загрузка фикстур под сюиту, либо вызов консольных команд либо еще как... С Behat скажем я просто для установки прекондишена использую сервисный слой приложения. А если вдруг захочу тестить UI мобилки, то на этот случай я написал простенький раннер для behat-а который позволяет запускать отдельные степы, тем самым я могу реюзать тесты для Behat в тестах для калабаша например (для установки прекондишена тестов).

Выбор CI: Jenkins или TeamCity.

Разница не столь велика на самом деле. Под Jenkins больше плагинов и прикольных штук но это стремная штука. Сам я пока сижу на дженкинсе.
Ответ написан
pygame
@pygame
Нужно ли перед запуском перенастраивать через ansible среду выполнения?

Зачем? У вас так часто меняются зависимости? Настройка сервера и CI никак не связаны. Изменилось окружение - меняем рецепты - накатываем. А билдим постоянно.

Их динамически создавать по образу, или сразу развернуть количество виртуалок по числу агентов?
Не могу подсказать, ни разу не настраивал удалённое тестирование. Использую phantomjs-driver.

Для моего основного фреймворка - Django - все просто, достаточно одной команды, что прогнать и ui, и unit-тесты - ничего больше не нужно.
И да, Jenkins.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы