Git克隆不带历史记录的SCM使用方法

6

我们的项目很大,我们希望避免克隆所有git历史记录。

在Jenkins中,是否可以使用checkout scm通过传递depth=1来进行git clone

如果可能的话,我找不到关于如何配置SCM或如何传递参数的任何文档。

已添加:
找到了文档

https://jenkins.io/doc/pipeline/steps/workflow-scm-step/#code-checkout-code-general-scm

类型:int
depth(可选)
设置浅克隆深度,使得Git仅下载项目的最近历史记录,当您只想访问存储库的最新版本时,可以节省时间和磁盘空间。

但是不清楚如何将其传递给checkout scm


顺便提一下:如果 Jenkins 节点上有空闲执行器,它会尝试重复使用它,而不是在随机节点上运行构建。因此,如果您克隆仓库一次,下一次它很可能会被重复使用。随着时间的推移,除非您清理它们,否则所有节点(除非您清理它们)都将拥有您的 Git 仓库,并且不会有太多完整的克隆。 - Stanislav Bashkyrtsev
好的,但如果branch=develop,我们在克隆之前会先删除整个构建目录。 - marco
我不知道为什么你要这样做。Jenkins会清除需要清除的内容,没有必要重新克隆存储库。如果你不相信Jenkins - 你可以自己运行 git reset --hardgit clean。这比浅层克隆快得多。 - Stanislav Bashkyrtsev
对啊,我的失败与构建目录无关。 - marco
1个回答

9
如果您使用脚本管道,则可以定制 checkout scm,让其看起来更或少如下所示:
node {
    checkout([
        $class: 'GitSCM',
        branches: scm.branches,
        doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
        extensions: scm.extensions,
        userRemoteConfigs: scm.userRemoteConfigs,
        depth: 1
    ])
}

如果您使用声明性流水线,则需要进入流水线作业配置,在行为部分添加Git -> 高级克隆行为,并标记浅克隆并将浅克隆深度设置为1
请参见以下截图: enter image description here

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接