docker - Gitlab CI : How to configure cypress e2e tests with multiple server instances?

标签 docker gitlab-ci cypress e2e-testing angular-e2e

我的目标是每晚运行一系列 e2e 测试,以检查代码更改是否在破坏我们应用程序的核心功能的前一天进行。

我们的平台是一个 Angular 应用程序,它调用 3 个单独的 Node.js 后端(auth-backend、old-和 new-backend)。我们还使用 MongoDB 作为数据库。

让我们考虑这 4 个项目中的每一个都有一个名为 develop 的分支,它应该只是 testet。

我的方法如下:

  • 我在一个单独的 docker 容器中运行每个后端和数据库。
  • 因此,我需要使用 ssh
  • 从 gitlab 获取该项目的最新版本。
  • 或者将 repo 克隆到 docker 容器并在其中运行构建。
  • 在所有项目都在正确的端口上运行之后(我会在某处指定),我启动 npm 脚本来运行 cypress e2e 测试。

  • 所有这些都应该在某个文件中定义。这甚至可能吗?

    最佳答案

    我没有使用 gitlab CI 的经验,但我知道,其他 CI 系统提供了运行的可能性,例如bash 脚本。

    所以我想你可以做到以下几点:

  • 编写一个提取所有 repos 的本地 bash 脚本(因为 gitlab 可以提供 key ,您可以使用这些来针对您的 gitlab repos 进行身份验证)
  • 在提取所有这些存储库后,您可以为不同的存储库运行所有构建命令
  • 由于你有一些 repos 工作并且相互依赖,你可能必须为这个用例添加一个构建命令,这样你总是有生产状态,或者任何你需要的
  • 拉取并构建存储库后,您应该为后端启动服务器
  • 我猜您的 Angular 应用程序使用某种环境变量来定义将请求发送到的服务器,因此您还必须在您的应用程序的构建命令/脚本中定义它们
  • 然后你应该能够运行你的测试

  • 就我个人而言,我认为 docker 对于这个用例来说有点过头了。可能您应该定义并运行管道以始终创建后端的新开发状态,将 docker 文件推送到您的服务器。然后您应该能够创建您的测试管道,它首先在您自己的服务器上启动 docker-container(因此您没有“管道内服务器”)。这应该已经启动了您的所有后端,以便您的测试管道现在可以针对那些设置的后端服务器运行您的 e2e 测试。

    我也建议您不要每晚都运行此管道,但当其中一个链接存储库的开发状态发生变化时。

    如果您需要帮助进行设置,请随时与我联系。

    关于docker - Gitlab CI : How to configure cypress e2e tests with multiple server instances?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60586136/

    相关文章:

    Docker 拉取失败并显示 "failed to register layer: sync ... input/output error"

    Docker + GitLab CI - 成功测试后将图像标记为 "latest"

    deployment - 远程 : The project you were looking for could not be found or you don't have permission to view it

    javascript - 此元素 <ion-select-option#ion-selopt-0.md.Hydrated> 不可见,因为它具有 CSS 属性 : display: none

    wordpress - Docker 编写 php-fpm、nginx、mysql 并在 nginx 上使用 wp-cli

    docker - Cypress ci缺少libgtk-x11-2.0.so.0

    continuous-integration - Gitlab CI - 无法注册运行者

    javascript - 远程运行 Cypress 测试运行程序

    email - 节点邮件程序。 createTestAccount 和 cypress : generate same email address

    docker - 根据条件启动一个docker容器