在Gitlab CI的作业之间共享不同的存储库

时间:2019-01-10 09:53:15

标签: gitlab gitlab-ci gitlab-ci-runner

在我们的项目中,我们拥有许多用于构建几个不同的Docker容器的存储库。

所有容器的Dockerfile位于单个存储库中。

我希望能够在构建容器之前提取构建所需的所有存储库。这样可以避免多次拉动存储库,而对于其中一些存储库可能要花一分钟的时间。

基本上我想做的是:

D

在阶段中共享存储库同时仍允许在阶段内并行构建的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

我仍在学习Gitlab-ci,但也许cache会有所帮助吗?

添加此内容,然后再拉回购协议,运行程序应检查该回购协议是否已在缓存中。

cache:
  paths:
    - repo1/
    - repo2/

Gitlab缓存参考:https://docs.gitlab.com/ee/ci/caching/

编辑:
还是将Git子模块用于依赖的仓库是一个好主意? 然后可以将运行器配置为将这些子模块获取到工作空间,并且您应该在整个ci作业中都可以访问它们。

您需要添加一个看起来像这样的.gitmodules文件:

[submodule "repo1"]
  path = repo1
  url = ../repo1.git
[submodule "repo2"]
  path = repo2
  url = ../repo2.git

然后在您的.gitlab-ci.yml

 variables:
   GIT_SUBMODULE_STRATEGY: normal

Gitlab子模块参考:https://docs.gitlab.com/ce/ci/git_submodules.html