2017-04-08 73 views
1

在jenkins文件中,我通过指定了我要检出的SparseCheckoutPaths。但我得到一个完整的分支结账。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”,国防部指定正确的配置?

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等于在您要结账的回购中是否为真?

+0

感谢您的答复。因为,结账将由詹金斯在一个从节点完成。所以,我不知道如何设置此配置标志。据我记得,git conig标志只能在本地定义,我们不能将这些信息推送到回购站。 – HAr

+0

@HAr是的,我正在考虑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

相关问题