2017-04-08 7 views
1

In einer jenkinsfile, habe ich den OrdnerName durch SparseCheckoutPaths angegeben, die ich zur Kasse gehen möchte. Aber ich bekomme stattdessen eine ganze Filiale.SparseCheckout in Jenkinsfile Pipeline

checkout([$class: 'GitSCM', 
     branches: [[name: '*/branchName']], 
     extensions: [[$class: 'SparseCheckoutPaths', path: 'FolderName']], 
     userRemoteConfigs: [[credentialsId: 'someID', 
     url: '[email protected]']]]) 

Antwort

4

Hier kommt die Antwort auf meine eigene Frage. Für ein bisschen Hintergrund, wie es funktioniert, gibt es Flagge/Konfiguration für Git Client namens Sparsecheckout, die für diese Art von Kasse verantwortlich ist. Darüber hinaus ist eine Sparse-Checkout genannte Datei erforderlich. Weitere Informationen finden Sie unter here.

war mein Problem ist die Syntax für die Jenkinsfile und richtige ist wie folgt:

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

für weitere Informationen, hier kommt die github-link

1

Ihre Syntax sieht gut aus, aber, wie es in "jenkinsci/plugins/gitclient/CliGitAPIImpl.java" gesehen, dod Sie die richtige Konfiguration angeben?

private void sparseCheckout(@NonNull List<String> paths) throws GitException, InterruptedException { 

    boolean coreSparseCheckoutConfigEnable; 
    try { 
     coreSparseCheckoutConfigEnable = launchCommand("config", "core.sparsecheckout").contains("true"); 
    } catch (GitException ge) { 
     coreSparseCheckoutConfigEnable = false; 
    } 

Mit anderen Worten, ist git config core.sparsecheckout im Repo auf true gleich Sie zur Kasse sind etwa?

+0

Dank für Ihre Antwort. Da wird der Checkout von den Jenkins in einem der Slave-Knoten erledigt. Also, ich bin mir nicht sicher, wie dieses Config-Flag gesetzt werden kann. Soweit ich mich erinnern kann, können Git Conig Flags nur lokal definiert werden und wir können solche Informationen nicht zum Repo schieben. – HAr

+0

@HAr Ja, ich habe über das Git-Plugin nachgedacht, das in seinen zusätzlichen Verhaltensoptionen einen spärlichen Checkout aufweist (siehe https://issues.jenkin-ci.org/browse/JENKINS-29278). Nicht sicher, es ist kompatibel mit Pipelines obwohl – VonC

+0

@HA Siehe http://stackoverflow.com/questions/35873902/accessing-scm-git-variables-on-a-jenkins-pipeline-job: Sie könnten als einen ersten Schritt hinzufügen Ihre Pipeline ein 'git config core.sparsecheckout true' – VonC

Verwandte Themen