如何使用多个 docker 设置 Gitlab CI E2E 测试

互联网 更新时间:2023-04-26 21:05:53

Rob*_*per 6

答案有点晚了,但我仍然会尝试为其他有相同问题的开发人员简要解释该方法。我还创建了一个示例项目,在 GitLab 中包含 3 个微服务,其中服务器 A 运行端到端测试并依赖于服务器 B 和服务器 C。

当 e2e 测试全栈应用程序时,您必须:

模拟微服务的所有响应 针对已部署的环境进行测试; 或在管道中临时启动环境

如您所述,您希望在管道中临时启动环境。应采取以下步骤:

在 GitLab 的私有注册表中将所有后端部署为 docker 镜像; 在管道中的一项工作中模仿您的docker-pose.yml服务; 将这些点连接在一起。

在 GitLab 私有注册表中将后端部署为 docker 映像

首先,您必须在 GitLab 的私有注册表中发布您的 docker 镜像。您这样做是因为您现在可以在另一项工作中重复使用这些图像。对于这种方法,您需要docker:dind. 发布到 gitlab 上的私有注册表的简单示例作业如下所示:

before_script:
  - echo -n $CI_JOB_TOKEN | docker login -u gitlab-ci-token --password-stdin $CI_REGISTRY

publish:image:docker:
  stage: publish
  image: docker
  services:
    - name: docker:dind
      alias: docker
  variables:
    CI_DOCKER_NAME: ${CI_REGISTRY_IMAGE}/my-docker-image
  script:
    - docker pull $CI_REGISTRY_IMAGE || true
    - docker build --pull --cache-from $CI_REGISTRY_IMAGE --tag $CI_DOCKER_NAME --file Dockerfile .
    - docker push $CI_DOCKER_NAME
  only:
    - master

要查看真实示例,我有一个公开的示例项目。

docker-pose.yml在管道中的 1 个工作中模仿您的服务

将所有后端 docker 化并在私有注册表上发布图像后,您就可以开始docker-pose.yml使用 GitLab 工作来模仿您的工作了。一个基本的例子:

test:e2e:
   image: ubuntu:20.04
   stage: test
   services:
      - name: postgres:12-alpine
        alias: postgress
      - name: mongo
        alias: mongo
      # my backend image
      - name: registry.gitlab./[MY_GROUP]/my-docker-image
        alias: server
   script:
      - curl server:3000 # expecting server exposes on port 3000, this should work
      - curl mongo:270117 # should work
      - curl postgress:5432 # should work!

运行测试

现在一切都在 GitLab 中的单个作业中运行,您可以简单地以分离模式启动前端并运行 cypress 来测试它。例子:

 script:
   - npm run start & # start in detached mode
   - wait-on localhost:8080 # see: npmjs./package/wait-on
   - cypress run # make sure cypress is available as well

结论

docker-pose.yml的意思不是在管道中运行。模仿它,而不是使用GitLab 服务。Dockerize 所有后端并将它们存储在GitLab 的私有注册表中。启动管道中的所有服务并运行测试。

更多推荐

多个,如何使用,测试,E2E,Gitlab

本文发布于:2023-04-26 21:05:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/hyzx/ca9749664e7ab7577d679a675a3ebab7.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:多个   如何使用   测试   E2E   Gitlab

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 89744文章数
  • 23114阅读数
  • 0评论数