caching - 如何在 Gitlab CI 中使用参考仓库
问题描述
我们正在将一些构建作业从 Jenkins 迁移到 Gitlab CI。我们已经成功地使用了 git clone 和 git submodule 以及 jenkins 中的“--reference”选项。这使得克隆大型存储库的速度更快,并减少了每个作业的存储量。
有没有办法在 Gitlab CI 中做同样的事情?
解决方案
您可以使用变量告诉 gitlab-runner 仅获取一定数量的提交(数量越少意味着获取的提交越少,因此运行速度越快):
variables:
GIT_DEPTH: 10
这意味着运行器在拉下存储库时将获取前 10 次提交。
您还可以控制运行程序如何使用GIT_STRATEGY
变量检索存储库:
variables:
GIT_STRATEGY: fetch
Fetch 是默认设置,您可以在项目 CI/CD 设置中进行配置,但您可以在此处为应该不同于默认设置的单个作业进行设置。其他选项是clone
和none
根本不检索存储库(例如,如果您正在构建 NPM 依赖项并且他们将它们作为工件上传)。
此外,您可以指定额外的标志,以便在运行程序使用变量git fetch
检索存储库时传递给:GIT_FETCH_EXTRA_FLAGS
variables: --no-tags
此变量默认为--prune --quiet
。GIT_FETCH_EXTRA_FLAGS:
您可以将所有这些变量放在文件顶部,.gitlab-ci.yml
任何工作之外,以便它适用于您的每个工作,或者您可以将其放在单个工作的定义中以仅应用于该工作,或覆盖默认设置在文件的顶部。
有一些文档提供了有关这些选项的更多详细信息:
推荐阅读
- oracle - Ora2pg 致命:错误:“实体 $code_”列中的空值违反非空约束
- pptxgenjs - 使用 pptxgenjs,添加一张完整的幻灯片图片
- nginx - 在 Nginx 的访问日志中显示从 auth_request 检索到的远程用户
- python - 使用熊猫按给定时间间隔分组日期和处理
- flutter - Flutter 中使用 BLoC 的文件上传进度
- arrays - int 数组的长度
- azure-ad-b2c - 如何使用电子邮件或电话以及唯一电子邮件/电话和自定义字段使用具有 MFA 的用户名配置 Azure b2c 注册和登录?
- semantic-release - npm semantic-release - 指定版本
- c# - 如何在 Xamarin AppShell 中动态添加 MenuItem
- node.js - VueJS - 未捕获的 RangeError:超出最大调用堆栈大小