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

Docker Gitlab CI:如何使用多个服务器实例配置cypress e2e测试?,docker,gitlab-ci,cypress,e2e-testing,angular-e2e,Docker,Gitlab Ci,Cypress,E2e Testing,Angular E2e,我的目标是每晚运行一系列e2e测试,以检查代码是否在中断应用程序核心功能前一天进行了更改 我们的平台是一个Angular应用程序,它调用3个独立的Node.js后端(auth后端、旧后端和新后端)。我们还使用MongoDB作为数据库 让我们考虑这4个项目中的每一个都有一个叫做开发的分支,它应该是TEST。 我的做法如下: 我在一个单独的docker容器中运行每个后端和数据库 因此,我需要使用ssh从gitlab获得该项目的最新版本 或者将repo克隆到docker容器并在其中运行构建 在所有项

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

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

让我们考虑这4个项目中的每一个都有一个叫做开发的分支,它应该是TEST。


我的做法如下:

  • 我在一个单独的docker容器中运行每个后端和数据库

  • 因此,我需要使用ssh从gitlab获得该项目的最新版本

  • 或者将repo克隆到docker容器并在其中运行构建

  • 在所有项目都在正确的端口上运行(我会在某处指定)之后,我启动npm脚本来运行cypress e2e测试


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

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

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

    • 编写一个本地bash脚本来提取所有repo(因为gitlab可以提供密钥,所以可以使用这些密钥来对gitlab repo进行身份验证)
    • 在拉取所有这些repo之后,您可以为不同的repo运行所有构建命令
    • 由于您有一些repo在工作,并且相互依赖,因此您可能需要为这个用例添加一个build命令,以便始终具有生产状态或任何您需要的状态
    • 在您拉取并构建了repo之后,您应该为后端启动服务器
    • 我猜angular应用程序使用某种环境变量来定义要向其发送请求的服务器,因此您还必须在应用程序的构建命令/脚本中定义它们
    • 然后您应该能够运行您的测试
    我个人认为docker在这个用例中有点过头了。您可能应该定义并运行一个管道,以便始终创建后端的新开发状态,将docker文件推送到服务器。然后,您应该能够创建测试管道,首先在您自己的服务器上启动docker容器(因此您没有“管道内服务器”)。这应该已经启动了所有后端,这样您的测试管道现在就可以针对那些设置好的后端服务器运行e2e测试了

    我还建议,你不应该每晚都运行这条管道,但当其中一个相关回购协议的发展状态发生变化时


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

    “为后端启动服务器”的具体情况发生在哪里?我的想法是,你已经将你的后端“发布”到你自己的服务器上。通过此配置,您可以通过管道中的ssh命令启动服务器。这样做的好处是,如果需要,您还可以将这些测试服务器用于本地开发。您可以在angular应用程序中使用环境变量。此解决方案需要为每个后端提供更多的管道,如果使用DB,还需要某种可以远程触发的重置脚本。如前所述,这不是最优雅的方式,但我想这是最有用、最灵活、易于维护的方式。