Gitlab CI:如何使用多个服务器实例配置 cypress e2e 测试?

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

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

我们的平台是一个 Angular 应用程序,它调用 3 个独立的 Node.js 后端(身份验证后端、旧后端和新后端)。我们还使用 MongoDB 作为数据库。

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


我的方法如下:

  1. 我运行将每个后端加上数据库放在一个单独的docker容器中。

  2. 因此我需要使用 ssh

  3. 从 gitlab 获取该项目的最新版本
  4. 或将 repo 克隆到 docker 容器并 运行 在其中构建。

  5. 在所有项目 运行ning 在正确的端口(我会在某处指定)之后,我启动 npm 脚本以进行 运行ning cypress e2e 测试。

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

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

所以我想您可以执行以下操作:

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

我个人认为 docker 对于这个用例有点过头了。可能你应该定义和 运行 一个管道来始终创建后端的新开发状态,将 docker 文件推送到你的服务器。然后你应该能够创建你的测试管道,它首先在你自己的服务器上启动 docker-容器(所以你没有 "in-pipeline-server")。这应该已经启动了你所有的后端,这样你的测试管道现在可以 运行 你的端到端测试针对那些设置的后端服务器。

我还建议,您不应该每晚 运行 这个管道,而是当其中一个链接的回购协议的开发状态发生变化时。

如果您在设置方面需要帮助,请随时与我联系。