Я создаю свое самое первое веб-приложение с Vue. js и использую Docker для виртуализации своей серверной базы данных MySQL (чтобы предоставить пользователям простой вариант сохранения в облаке), в то время как развивающийся. Я также использую Cypress для запуска тестов E2E на моем интерфейсе, включая возможные взаимодействия пользователя с БД (или, скорее, взаимодействия с моим API, который затем отправляет соответствующие запросы в БД). Что я хочу сделать сейчас, так это создать конвейер GitLab, который автоматически запускает мои тесты Cypress, для которых требуется работа Docker БД.
При локальном запуске моего приложения I go, выполнив следующие шаги:
- Я запускаю свои 3 Docker контейнера (Node.js API, MySQL DB, PHP Adminer) в терминале через
docker-compose up
, используя мой docker -compose. yml . - Я запускаю свое приложение в режиме разработки через
npm run serve
. - Теперь, когда контейнеры Docker и приложение запущены, я могу успешно запустить свои тесты Cypress с npm тоже.
Теперь я хочу автоматизировать весь этот процесс в .gitlab-ci.yml . Мне удалось создать приложение, а также запустить тесты Cypress, но я не могу понять, как запустить мои Docker контейнеры перед запуском Cypress, чтобы мои тесты действительно могли взаимодействовать с виртуальной БД. Я просто попытался добавить в скрипт команду docker-compose up
перед вызовом Cypress, но потом конвейер не работает, потому что он не знает эту команду. Затем я просмотрел разные руководства о том, как импортировать docker -compose в ваш конвейер, но пока ничего не работает.
Перед тем, как попробовать любое из этих неудачных руководств, мой yml-файл выглядел так:
image: cypress/base:10
stages:
- test
- build
cache:
paths:
- node_modules/
run_cypress:
stage: test
script:
- cd docker
- docker-compose up
- cd ../code
- npm install
- npm run cypress:open
artifacts:
expire_in: 1 week
when: always
paths:
- [redacted]
build_code:
stage: build
script:
- cd code
- npm install
- npm run build
Как я уже сказал, этот сценарий не работает на строке docker-compose up
, но без него работает нормально. Тесты также выполняются правильно с пользовательским сценарием cypress:open
, но большинство из них терпят неудачу, потому что без Docker база данных, конечно, не работает. Итак, что мне нужно добавить или изменить, чтобы сценарий знал docker-compose
и позволял ему правильно работать Docker перед выполнением тестов?