如何在 CI 中运行全栈 E2E 测试 (Gitlab)

jof*_*rly 5 continuous-integration gitlab-ci e2e-testing gitlab-ci-runner

我有一个 web 应用程序,由以下部分组成: - 前端存储库 (Angular 8) - 后端存储库 (Node.js/NestJS 6)

我使用 Gitlab 作为 SCM 提供程序、docker 注册表和 CI/CD 工具。安装、检查、测试(单元)和构建已经可以与 CI 配合使用。

现在我想介绍我使用 Cypress 在前端存储库中添加的 E2E 测试。

为了使测试正常工作,我需要 - 运行后端(使用 docker-compose),包括 S3 模拟和数据库(mongo) - 将演示数据插入后端(为此获得一个脚本) - 运行指向后端 API - 运行 cypress 测试

我的问题是:如何运行包含 CI 阶段中的依赖项的 dockerized 后端,以便我有一个后端实例来运行 e2e 测试?

我已经尝试在舞台内通过 docker-compose 运行后端。这导致容器启动,但无法从 gitlab-runner 容器内访问它们。

这是前端存储库 .gitlab-ci.yml 中的一个阶段:

e2e:
  image: docker:stable
  stage: e2e
  script:
    - apk add --no-cache py-pip python-dev libffi-dev openssl-dev gcc libc-dev make nodejs npm git curl
    - pip install docker-compose
    - npm install -g wait-on spa-http-server forever
    - docker-compose up -d
    - wait-on http://localhost:4000/api/ && curl -X POST http://localhost:4000/global/createDemoData
    - npm run build
    - forever start -c http-server dist/XXX/ -p 4200 --push-state
    - wait-on http://localhost:4200 && npm run e2e-ci
    - forever stopall
    - docker-compose down
Run Code Online (Sandbox Code Playgroud)