【问题标题】:How do I mount a volume in a docker container in .gitlab-ci.yml?如何在 .gitlab-ci.yml 的 docker 容器中安装卷?
【发布时间】:2016-08-17 19:00:42
【问题描述】:

我在一个 Android 项目中使用 .gitlab-ci.yml 和 docker 作为 GitLab CI 运行程序。在测试运行结束时,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/... 那样安装卷。

【问题讨论】:

    标签: docker gitlab-ci-runner


    【解决方案1】:

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

    我认为更好的解决方案是将测试结果定义为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
    

    【讨论】:

    • 在仔细阅读了 gitlab-ci.yml 文档后,我意识到我走错了路。按照@mgansler 的建议使用 artifacts 对我有用。
    • @Martin 我使用 Gitlab 11.9.8 在 k8s 上安装了我的 gitlab-runner - 通过 K8s 集成 UI。现在安装后,我似乎无法修改运行器的配置。我使用 kubeadm 设置我的 k8s 集群。我想将 /var/run/docker.sock 从主机挂载到我正在构建代码的容器。
    • 一个如何使用工件来访问在 gitlab 管道执行期间生成的文件的示例,即使管道失败:juristr.com/blog/2020/10/upload-failed-artifacts-gitlab
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2019-12-18
    • 2017-11-11
    相关资源
    最近更新 更多