kubernetes jenkins pipeline优化拉取大仓库性能指定分支+深度 - 指南

有时候我们历史的git仓库,提交了某个比较大的文件如果不限制 depth ,就会拉取所有的历史提交记录,这样在历史仓库比较大的时候 clone 非常之慢,而实际上我们只需要最新的代码来构建就行了,为了优化性能,我们可以配置指定拉取:

关键配置:

stage('Check code') {            echo("gitCommitId value is: ${gitCommitId}")            // sh "sleep 10000"            def scmVars = checkout([                    $class: 'GitSCM',                    branches: [[name: "${gitCommitId}"]],                    extensions: [                            [$class: 'CloneOption', depth: 1, shallow: true, noTags: true, honorRefspec: true, timeout: 3000]                    ],                    userRemoteConfigs: [[                                                credentialsId: "${gitlabCredential}",                                                url: "${gitlabURL}",                                                refspec: "+refs/heads/${gitCommitId}:refs/remotes/origin/${gitCommitId}"                                        ]]            ])            commitHash = scmVars.GIT_COMMIT.take(8)            echo("${commitHash}")        }

上面的拉取方式只适合拉取分支的,如果还要兼容commitId,需要下面的配置:

// 判断是分支名还是 commit hashdef isCommitHash = gitCommitId ==~ /^[a-f0-9]{7,40}$/ def scmVars = checkout([    $class: 'GitSCM',    branches: [[name: isCommitHash ? "${gitCommitId}" : "origin/${gitCommitId}"]],    extensions: [        [$class: 'CloneOption', depth: 1, shallow: true, noTags: true, honorRefspec: true, timeout: 3000]    ],    userRemoteConfigs: [[        credentialsId: "${gitlabCredential}",        url: "${gitlabURL}",        refspec: isCommitHash ?             "+${gitCommitId}:refs/remotes/origin/target-commit" :             "+refs/heads/${gitCommitId}:refs/remotes/origin/${gitCommitId}"    ]]])
posted @ 2025-07-22 20:13  wzzkaifa  阅读(25)  评论(0)    收藏  举报