Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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?

like image 264
Mark Allison Avatar asked May 23 '17 11:05

Mark Allison


1 Answers

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

like image 165
VonC Avatar answered Oct 02 '22 17:10

VonC