GitLab CI 构建多个 docker + 端到端测试

GitLab CI build multiple dockers + test end-to-end

我想从 GitLab 中的一个存储库构建和测试多个 docker。这个 monorepo 拥有一些协同工作的微服务。
我们有一个可用的 docker compose up 来帮助本地开发人员,所以这就是一个开始。 目标是将构建 + 测试移动到 GitLab,运行 对这些 docker 进行 E2E 测试(端到端),并让 GitLab 升级我们的暂存环境。

多个 docker 的构建只是(一个)管道构建阶段的多个作业,我猜每个 docker 都可以进行测试,这就剩下用多个 dockers 运行在(或?)暂存环境中。

  1. GitLab 运行 如何在多个 docker 上进行 E2E 测试? (或者这是不明智的开始)

  2. 我们是否需要 Kubernetes 来实现 docker 之间的映射(网络、卷,以及依赖项)docker-compose 现在可以促进?

我们正在使用自托管的 GitLab CE 实例。

更新:缩短,使用适当的术语。

我没有研究过 PHP,也从未做过 Docker 多模块构建,尽管我尝试了一个针对 Nodejs 的多模块类事物的快速示例。检查这个 Repo

参考.gitlab-ci.yml构建了两个独立的hello world类nodejs模块。

我现在对此进行了调整以单独构建 docker 图像。

原始答案(问题于 7 月 12 日更改)

你没有提到你指的是什么文档。您应该能够使用 .gitlab-ci.yml

进行配置

AFAIK 建筑 docker 图片应该与编程语言无关。如果你可以 运行 docker build . 在你的本地。以下文档应该有所帮助 https://docs.gitlab.com/ee/ci/docker/using_docker_build.html

您可以使用 Gitlab 管道来测试 <-> 构建图像。参考https://docs.gitlab.com/ee/ci/pipelines.html

PHP 构建参考此 - https://docs.gitlab.com/ee/ci/examples/php.html

回答我自己的问题,2 年后的经验。

  • 对于普通 (single-project/service) 回购,CI 很简单。
  • 对于 monorepo,端到端测试很简单。

您可以通过拥有一个带有子模块的 repo 来结合这些方面,它本质上是两者兼而有之。但是,如果连续进行并且主要用于校对 beta/alpha 和发布候选人,这可能会导致开销。

如果你知道更多选项,欢迎在这里添加。