gpt4 book ai didi

java - 从在 gitlab CI 中不起作用的资源读取文件

转载 作者:行者123 更新时间:2023-12-02 04:13:44 25 4
gpt4 key购买 nike

我在使用以下命令在 gitlab CI 上运行测试时遇到错误:

./gradlew clean test

我正在使用测试容器来运行我的测试:https://www.testcontainers.org/modules/docker_compose/

这是我用来加载位于 src/test/resources 的 docker compose 文件的代码。

@ClassRule
public static DockerComposeContainer container = new DockerComposeContainer(new File(BaseServiceTest.class.getClassLoader().getResource("docker-compose.yml").getFile()));

我在本地运行时运行正常,在gitlab上运行ci时购买,出现以下错误:

{"timestamp":"2019-06-17T18:47:44.903Z","level":"ERROR","thread":"Test worker","logger":"docker[docker/compose:1.8.0]","message":"Log output from the failed container:\n.IOError: [Errno 2] No such file or directory: '/builds/xxxx/xxxx/xxxx-xxxx/src/test/resources/docker-compose.yml'\n","context":"default"}

以下是我的 gitlab-ci.yml 文件:

include:
- project: 'xxxx/xxxx/sdlc'
file: '/sdlc.yml'

variables:
CONTAINER_NAME: xxxx-xxxx

test:
stage: test
image: registry.xxxx.com/xxxx-alpine-jdk8:v1_8_181
script:
- ls -la src/test/resources
- ./gradlew clean test -i

在我的脚本中,我有 ls -la src/test/resources我可以看到docker-compose.yml运行该脚本时的文件。不知道为什么它在运行代码时不可用。

最佳答案

基于 Testcontainers 文档 here 。Gitlab CI 上的测试容器需要 DinD 服务

这里是一个例子:

# 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: gradle:5.0
stage: test
script: ./gradlew test

关于java - 从在 gitlab CI 中不起作用的资源读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56674613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com