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 运行在(或?)暂存环境中。
GitLab 运行 如何在多个 docker 上进行 E2E 测试? (或者这是不明智的开始)
我们是否需要 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 和发布候选人,这可能会导致开销。
如果你知道更多选项,欢迎在这里添加。
我想从 GitLab 中的一个存储库构建和测试多个 docker。这个 monorepo 拥有一些协同工作的微服务。
我们有一个可用的 docker compose up
来帮助本地开发人员,所以这就是一个开始。
目标是将构建 + 测试移动到 GitLab,运行 对这些 docker 进行 E2E 测试(端到端),并让 GitLab 升级我们的暂存环境。
多个 docker 的构建只是(一个)管道构建阶段的多个作业,我猜每个 docker 都可以进行测试,这就剩下用多个 dockers 运行在(或?)暂存环境中。
GitLab 运行 如何在多个 docker 上进行 E2E 测试? (或者这是不明智的开始)
我们是否需要 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 和发布候选人,这可能会导致开销。
如果你知道更多选项,欢迎在这里添加。