【问题标题】:how does gitlab ci clone repo into docker?gitlab ci 如何将 repo 克隆到 docker 中?
【发布时间】:2019-02-13 02:29:04
【问题描述】:

我对 Bamboo 很熟悉,但对 gitlab ci 很陌生,我用 gitlab 尝试了几次,发现 gitlab 的一个关键优势是 git 存储库的自动克隆

棘手的部分是 gitlab ci 甚至可以将存储库自动克隆到 docker 容器中

我的 git 仓库:

.git    
.gitlab-ci.yml
foobar.sh

这份工作:

  job1:
  stage: run
  image: 
    name: my_image
  script: 
    - ./foobar.sh
    - some other scripts within the docker

可以成功运行。

拉动 my_image 后的日志显示,有一个 git clone 操作,就像另一个 SO answer 所说的那样。但是日志不够详细,无法让我知道触发此命令的位置(我不是 gitlab ci runner 的所有者,因此无法控制日志详细级别,如果重要的话)。

所以我的问题:

  1. git clone 命令是在 docker 内部还是外部运行?
  2. 如果在其中,是谁触发的? docker run ...的完整命令是什么?
  3. 如果在外面,该目录何时何地挂载到 docker?

    我已经阅读了docs,但没有找到任何解释上述机制的地方。

【问题讨论】:

  • 它是由这里描述的辅助图像helper_image完成的,我假设这个图像是在目标容器中安装构建路径,这是如何完成的我暂时没有发现。

标签: docker continuous-integration gitlab gitlab-ci


【解决方案1】:

看,gitlab runner 拉取图像并启动一个容器。然后从容器内部,执行该 gitlab 存储库的 git 克隆(由 gitlab 运行器)。它不是来自外部,也没有安装任何东西。它仅适用于管道所属的存储库。

如果您想克隆另一个 repo,您​​必须手动完成,方法是预先将其烘焙到您的映像中,或者告诉 gitlab 运行器执行另一个 git clone。

script:
    - git clone https://github.com/bluebrown/dotfiles

我假设,当容器中没有安装 git 时,它会导致问题。

【讨论】:

  • docker run ...的完整命令是什么?
  • 这不是它的工作方式。有一个容器仅用于克隆、处理工件等。并且这些图像之间有一个共享磁盘。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多