首页 > 解决方案 > Gitlab CI 和 Git 部分克隆

问题描述

我正在一个大型 monorepo 上测试 git 部分克隆功能。开发人员可能会在他的机器上运行以下命令:

git clone --filter=blob:none --sparse THE_MONOREPO_URL.git
git sparse-checkout init --cone 
git sparse-checkout set SOME FOLDERS

这似乎运作良好,我现在正试图在 Gitlab 中启动并运行 CI。如果我在我的.gitlab-ci.yml文件中使用默认设置,Gitlab 会克隆整个 monorepo,这需要很长时间。

Gitlab 最近添加了对部分克隆的实验性支持,但是 Gitlab-CI 中是否有任何支持?我唯一的选择是使用上面的命令GIT_STRATEGY: none然后手动克隆所有内容吗?before_script

标签: gitgitlabgitlab-cimonoreposparse-checkout

解决方案


请注意,clone --sparse已经sparse-checkout init为您运行。

您可以将 git 策略设置为 FETCH,然后使用https://docs.gitlab.com/ee/ci/yaml/README.html#git-fetch-extra-flags自定义获取/克隆项目的方式。

请注意,Fetch 和 Clone 策略都使用此标志。2 策略之间的唯一区别是 Clone 会在运行 'git fetch' 之前尝试删除前一次运行缓存的 repo


推荐阅读