2017-04-08 9 views
1

jenkinsfileでは、チェックアウトしたいからSparseCheckoutPathsまでfolderNameを指定しました。しかし、私は代わりに全体支店のチェックアウトを取得しています。JenkinsfileパイプラインのSparseCheckout

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

答えて

4

ここに私自身の質問に対する答えがあります。これはどのように動作するのですか?gitクライアントのフラグ/設定は、sparsecheckoutと呼ばれ、この種のチェックアウトを担当しています。さらに、スパースチェックアウトという名前のファイルも必要です。詳細はhereをご覧ください。

私の問題は、Jenkinsfileと正しいものの構文だった次のとおりです。

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

は、より多くの情報のために、ここにあなたの応答をgithub-link

1

あなたの構文は、「jenkinsci/plugins/gitclient/CliGitAPIImpl.java」に見られるように、よさそうだ、しかし、あなたは右の設定を指定するDOD?言い換えれば

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; 
    } 

git config core.sparsecheckoutはあなたがチェックアウトしようとしているレポでtrueに等しいのですか?

+0

感謝しています。チェックアウトはスレーブノードのJenkinsによって行われます。だから、私はこの設定フラグをどのように設定することができないのか分かりません。私が覚えている限り、git conigフラグはローカルでしか定義できず、そのような情報をrepoに送ることはできません。 – HAr

+0

@HArはい、私はGit Pluginについて考えていました.Git Pluginは、追加動作のオプション(https://issues.jenkins-ci.org/browse/JENKINS-29278)で疎なチェックアウトを行っています。それがパイプラインと互換性があるかどうかわからない – VonC

+0

@HAr http://stackoverflow.com/questions/35873902/accessing-scm-git-variables-on-a-jenkins-pipeline-jobを参照してください。あなたのパイプライン 'git config core.sparsecheckout true' – VonC

関連する問題