Abh*_*dha 5 git jenkins shallow-clone
我正在使用 Jenkins 文件来构建管道。我正在尝试使用如下 DSL 克隆参考存储库。
checkout(
[$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false,
extensions: [[$class: 'CloneOption', depth: 1, noTags: false, reference: '', shallow: true]],
submoduleCfg: [],
userRemoteConfigs: [[url: 'git@bitbucket.org:user_team/infrastructure-as-code.git']])
Run Code Online (Sandbox Code Playgroud)
当管道正在执行时,它正在被转换成这个
git fetch --tags --progress git@bitbucket.org:userteam/infrastructure-as-code.git +refs/heads/*:refs/remotes/origin/* --depth=1
Run Code Online (Sandbox Code Playgroud)
这会在我的 Jenkins 服务器上克隆整个存储库。我只想获得我的 repo 的浅拷贝,以便我可以从空间紧缩中拯救我的 Jenkins 服务器。请在这里帮忙。
我正在使用:Jenkins 版本:2.58,
插件:
流水线 SCM 步骤:2.4
吉特:3.3.0
我认为您误解了浅克隆的含义。
浅克隆仍将克隆整个存储库。
不同之处在于历史记录将被截断为指定的提交次数(在您的情况下为 1,因为您提到深度为 1)。它可以为您节省大量空间和时间。
欲了解更多信息,请点击此链接: git-clone#Documentation
例如,请参见下图,我将同一存储库 ( https://github.com/spring-cloud/spring-cloud-config.git ) 克隆两次,一次没有深度,一次深度=1。在第一种情况下,本地存储库大小为 40 MB,而随着深度的增加,本地存储库大小仅为 3.4 MB。
我建议检查https://issues.jenkins-ci.org/browse/JENKINS-43878以更好地理解。该票证的记者比较了 3 种情况下克隆+签出过程的持续时间:使用 git 命令的非浅克隆、使用管道的浅克隆和使用 git 命令的浅克隆(深度=1),票证报告者抱怨情况 #2持续时间比情况 #3 长得多。
我使用存储库https://github.com/tesseract-ocr/tessdata(~5 GB)进行了练习,但无法重现持续时间差异。但我观察到了巨大的尺寸差异。这些是我的测量结果:
(我比较中的“fetch”大小是我在“git fetch”之后和“git checkout”之前在 Jenkins 管道的帮助下使用“du -ms”测量的目录的大小)
如果比较情况 3 和 4,您会发现,对于浅克隆,管道(即“fetch+checkout”)方法会比普通“克隆”占用更多的磁盘空间。
管道维护者同意这一事实,但以“不会修复”关闭了票证,因为他们不想由于其他原因将插件的工作方式从“获取+签出”更改为“克隆”。
这正是您问题的答案,为什么您看不到 Jenkins 管道的浅层克隆和完整克隆之间的巨大差异:因为 Jenkins 管道使用“获取+签出”方法,在 --深度 的情况下,其工作方式与“克隆”不同,并且下载更多数据比“克隆”。
如果您需要普通的“clone --depth”,则应将其作为管道脚本中的 shell 命令运行。在我看来,这是 Jenkins 管道的一个缺点。
归档时间: |
|
查看次数: |
8391 次 |
最近记录: |