Gitlab CI: Как настроить тесты Cypress E2e для нескольких экземпляров сервера? - PullRequest
1 голос
/ 08 марта 2020

Моя цель - каждую ночь запускать несколько тестов e2e, чтобы проверить, были ли изменения кода внесены за день до взлома основных функций нашего приложения.

Наша платформа - приложение Angular, которое вызывает 3 отдельных Node.js бэкэнды (auth-backend, old- и new-backend). Также мы используем MongoDB в качестве базы данных.

Давайте рассмотрим каждый из 4 проектов с веткой под названием develop , которая должна быть только тестовой.


Мой подход будет следующим:

  1. Я запускаю каждый бэкэнд плюс базу данных в отдельном docker контейнере.

  2. Для этого мне нужно получить либо последняя сборка этого проекта из gitlab с использованием s sh

  3. , либо клонирование репо в контейнер docker и запуск сборки внутри него.

  4. После того, как все проекты запущены на правильных портах (которые я бы где-то указал), я запускаю сценарий npm для запуска тестов cypress e2e.

Все это должен быть определен в каком-то файле. Это вообще возможно?

1 Ответ

1 голос
/ 08 марта 2020

У меня нет опыта работы с CI gitlab, но я знаю, что другие CI-системы предоставляют возможность запускать, например, bash сценарии.

Так что я думаю, вы можете сделать следующее:

  • Напишите локальный bash скрипт, который извлекает все репозитории (поскольку gitlab может предоставлять секретные ключи, вы можете использовать их для аутентификации на ваших репозиториях gitlab)
  • После всех эти репозитории были извлечены, вы можете запустить все свои команды сборки для разных репозиториев
  • Поскольку некоторые репозитории работают и зависят друг от друга, вам, возможно, придется добавить команду сборки именно для этого варианта использования, чтобы у вас всегда есть производственное состояние или все, что вам нужно
  • После того, как вы извлекли и построили свои репозитории, вы должны запустить свои серверы для своих бэкэндов
  • Я полагаю, ваше приложение angular использует какое-то Переменные окружения, чтобы определить серверы для отправки запроса, поэтому вы также должны определить их в вашей команде / скрипте сборки для вашего приложения
  • Затем вы должны быть в состоянии выполнить ваши тесты

Лично я считаю, что docker является своего рода передозировкой для этого варианта использования. Возможно, вам следует определить и запустить конвейер, чтобы всегда создавать новое состояние разработки вашего бэкэнда, pu sh файл docker для вашего сервера. Затем вы сможете создать свой тест-конвейер, который сначала запустит docker -контейнер на вашем собственном сервере (поэтому у вас нет «in-pipe-server»). Это должно было запустить все ваши бэкэнды, чтобы ваш тестовый конвейер теперь мог запускать ваши тесты e2e на тех настроенных Бэкэнд-серверах.

Я также советую вам не запускать этот конвейер каждую ночь, но когда состояние разработки одного из этих связанных репозитариев меняется.

Если вам нужна помощь в настройке, свяжитесь со мной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...