如何在 .gitlab-ci.yml 中的 docker 容器中安装卷?

How do I mount a volume in a docker container in .gitlab-ci.yml?

我在 Android 项目上使用 .gitlab-ci.yml 和 docker 作为 GitLab CI 运行ner。测试结束时运行,gradlew将测试结果保存在build目录下的xml和html中:

Finished generating test XML results (0.001 secs) into: /builds/org/project/sdk/build/test-results/release
 Generating HTML test report...
Finished generating test html results (0.002 secs) into: /builds/org/project/sdk/build/reports/tests/release

我想访问这些文件,但是 documentation 没有提到如何像使用 docker run -v <path>:/builds/org/... 那样安装卷。

我建议不要从主机为您的 CI 安装卷。 如果你真的想要,你必须相应地配置跑步者(config.toml)。 如果您使用 shared runners,您永远不知道特定构建将在哪个系统上执行。

我认为更好的解决方案是将测试结果定义为 artifacts

这样,测试结果可用于旧版本,而不仅仅是最新版本。

您可以在下面找到我用于构建 docker-images 的跑步者的配置 (config.toml)。您可以将 /var/run/docker.sock 替换为您希望构建结果最终所在的目录。

[[runners]]
  name = "Docker"
  url = "https://mygitlab/ci"
  token = "mytoken"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "docker:latest"
    privileged = false
    disable_cache = false
    volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
  [runners.cache]
    Insecure = false