How to clone a directory from a remote repo in a Jenkins pipeline script?

11,212

That looks like declarative pipeline, and not scripted pipeline

With the latter, you can use the syntax seen in this answer, based on the hudson.plugins.git.extensions.impl.SparseCheckoutPaths class from The Jenkins Git Plugin:

checkout([$class: 'GitSCM', 
    branches: [[name: '*/branchName']],
    doGenerateSubmoduleConfigurations: false,
    extensions: [
        [$class: 'SparseCheckoutPaths',  sparseCheckoutPaths:[[$class:'SparseCheckoutPath', path:'folderName/']]]
                ],
    submoduleCfg: [],
    userRemoteConfigs: [[credentialsId: 'someID',
    url: '[email protected]']]])

Don't forget the .git/info/sparse-checkout file

Share:
11,212
Mark Allison
Author by

Mark Allison

Updated on June 09, 2022

Comments

  • Mark Allison
    Mark Allison almost 2 years

    I have a large repo in GitHub Enterprise and need to clone a sub-directory from it on my Jenkins build server and just build that sub-directory. I am using a pipeline script and have this right now:

    node {
        stage ('checkout') {
            git url: '[email protected]:Org/MyLargeRepo.git'
        }
    }
    

    What I want is to clone from github.devops.mycompany.local:Org/MyLargeRepo/path/to/subproject

    I know I probably need to use sparse checkouts, but can't seem to work out how to configure that in a Jenkins pipeline script. Any ideas?