我一直在尝试将Testcontainers库与我当前的Jenkins CI/CD管道一起用于postgres DB集成测试。我以前使用的是嵌入式postgres库,但现在在我的Jenkins管道中,我在一个容器内完成所有步骤,并且我无法使其工作。然后我遇到了Testcontainers项目,它似乎是我的Java Spring项目的一个很好的替代方案。
我一直在关注这个article,它声明我们很可能不必为CI环境做任何更改,因为testcontainer识别它在容器内运行,并且它支持它。
因此,显然,即使我们在容器化环境中运行集成测试,它也应该工作,但当我尝试它时,我在集成测试中得到以下错误:ERROR org.testcontainers.dockerclient.DockerClientProviderStrategy - Could not find a valid Docker environment. Please check configuration.
这是我的jenkinsfile(我使用PCF)
node('pcf-node') {
container('jdk17-container') {
...
stage('integration testing') {
currentStep = "${env.STAGE_NAME}"
runIntegrationTests()
}
...
}
}
经过一些研究,我仍然不确定是否可以从jenkins管道在容器内访问docker,但是当我在de container内运行docker info
时,它返回docker: command not found
。
有什么建议吗?
1条答案
按热度按时间3hvapo4f1#
您确定安装Jenkins的计算机也在运行Docker进程吗?
为了使用测试容器,Docker必须安装并运行在您运行测试的机器上。解决方案是在CI/CD机器上安装并运行Docker进程。
例如:试着关闭Docker的本地示例并启动testcontainers测试。2你会得到如下的结果: