【问题标题】:git clone without history using SCMgit clone 没有使用 SCM 的历史记录
【发布时间】:2019-07-03 12:30:21
【问题描述】:

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

是否可以在 Jenkins 中使用 checkout scm git clone 传递 depth=1

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

已添加:
找到文档

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

类型:int
深度(可选)
设置浅克隆深度,这样 git 只会下载最近的历史记录 项目,当您只想访问最新版本时节省时间和磁盘空间 版本库。

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

【问题讨论】:

  • JFYI:如果 Jenkins 在节点上有免费的执行程序,它会尝试重新使用它,而不是在随机节点上运行构建。因此,如果您克隆一次 repo,很可能会在下一次重新使用它。随着时间的推移,您的所有节点(除非您清理它们)都将拥有您的 Git 存储库,并且不会有很多完整的克隆。
  • 好的,但是对于branch=develop,我们会在克隆之前删除整个构建目录。
  • 我不知道你为什么要这样做。 Jenkins清除了需要清除的内容,无需重新克隆存储库。如果您不信任 Jenkins - 您可以自行运行 git reset --hardgit clean。这将比浅层克隆快得多。
  • 是的,我的失败,构建目录与结帐目录无关

标签: git jenkins-pipeline


【解决方案1】:

如果您使用脚本化管道,那么您可以自定义 checkout scm 使其看起来或多或少像这样:

node {
    checkout([
        $class: 'GitSCM',
        branches: scm.branches,
        doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
        extensions: scm.extensions,
        userRemoteConfigs: scm.userRemoteConfigs,
        depth: 1
    ])
}

如果您使用声明式管道,则需要转到管道作业配置并在 Behaviors 部分中添加 Git -> Advanced clone behavior 和标记浅克隆并将浅克隆深度设置为1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-04
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多