在 gitlab 管道中执行 testcontainer 集成测试
Posted
技术标签:
【中文标题】在 gitlab 管道中执行 testcontainer 集成测试【英文标题】:execute testcontainer integration test in gitlab pipeline 【发布时间】:2021-05-15 12:15:08 【问题描述】:我对 GitLab 和 docker 还很陌生,我有一个由几个步骤组成的管道
对于 Maven 构建,我使用的 junit 测试阶段
image: maven:3-jdk-8
- 并在脚本部分添加适当的 maven 命令
对于我使用的 docker 构建和部署阶段
image: docker:latest
- 并在脚本部分添加适当的 docker 命令
现在 - 我想包含基于 testcontainers 的集成测试,这意味着我至少需要执行一些 docker 命令和 mvn 命令。那么上述图像都不合适,我的脚本的某些部分失败了。 docker: command not found 或 mvn: command not found.
这是否意味着我必须构建并部署到 docker hub 我自己的包含所需依赖项的映像?寻找这样的图像,但没有找到它。或者也许有更简单的解决方案?感谢您的任何回答。
【问题讨论】:
【参考方案1】:您是否尝试过 Testcontainers documentation 中描述的方法?因此,在您的情况下,提供的 .gitlab-ci.yml
示例如下所示:
# DinD service is required for Testcontainers
services:
- docker:dind
variables:
# Instruct Testcontainers to use the daemon of DinD.
DOCKER_HOST: "tcp://docker:2375"
# Improve performance with overlayfs.
DOCKER_DRIVER: overlay2
test:
image: maven:3-jdk-8
stage: test
script: mvn clean verify
【讨论】:
是的,这正是我所做的。在这种情况下,我在“测试”阶段得到:“docker: command not found”。 为什么在集成测试阶段明确需要docker
命令?通常,testcontainers 库只需要 docker 守护进程,而不是命令本身。容器是在 java 代码的帮助下启动的,而不是 docker
命令。
如果没有 docker 命令,你如何登录到你的注册表?以上是关于在 gitlab 管道中执行 testcontainer 集成测试的主要内容,如果未能解决你的问题,请参考以下文章