我可以在Jenkinsfile中扩充scm吗?

时间:2017-09-01 16:56:03

标签: jenkins jenkins-pipeline

我花了很多时间来理解try: aln = skbio.TabularMSA.read(alignment_fh, constructor=skbio.RNA) except: alignment_fh.close() aln = skbio.TabularMSA.read(alignment_fh, constructor=skbio.DNA) 在Jenkinsfile中的真正含义(checkout是一个函数,顺便说一下scm是一个默认的全局变量)。

现在我已经理解了它,我想补充(_, 'b')例如增加特定结帐的超时或设置 WinRmTool.Builder cmdTool = createWinRmBuilder(); cmdTool.environment(environment); WinRmToolResponse cmdResponse = cmdTool.build().executeCommand("taskkill /F /IM iexplore.exe /T"); 。这可能吗?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:3)

对于Git,checkout scm基本上等同于:

checkout([
     $class: 'GitSCM',
     branches: scm.branches,
     doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
     extensions: scm.extensions,
     userRemoteConfigs: scm.userRemoteConfigs
])

如果要向现有scm添加稀疏签出,您将执行以下操作:

checkout([
     $class: 'GitSCM',
     branches: scm.branches,
     doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
     extensions: scm.extensions + [$class: 'SparseCheckoutPaths',  sparseCheckoutPaths:[[$class:'SparseCheckoutPath', path:'path/to/file.xml']]],
     userRemoteConfigs: scm.userRemoteConfigs
])

更好的是,您可以在共享库中定义一个自定义步骤sparseCheckout

def call(scm, files) {
    if (scm.class.simpleName == 'GitSCM') {
        def filesAsPaths = files.collect {
            [path: it]
        }

        return checkout([$class                           : 'GitSCM',
                         branches                         : scm.branches,
                         doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
                         extensions                       : scm.extensions +
                                 [[$class: 'SparseCheckoutPaths', sparseCheckoutPaths: filesAsPaths]],
                         submoduleCfg                     : scm.submoduleCfg,
                         userRemoteConfigs                : scm.userRemoteConfigs
        ])
    } else {
        // fallback to checkout everything by default
        return checkout(scm)
    }
}

然后用以下命令调用它:

sparseCheckout(scm, ['path/to/file.xml'])

答案 1 :(得分:0)

您绝对可以自定义checkout scm命令以增加灵活性。查看此链接以了解所有选项 - https://jenkins.io/doc/pipeline/steps/workflow-scm-step/

超时:

  

$class: CheckoutOption timeout::::   指定结帐的超时(以分钟为单位)。   此选项会覆盖默认超时10分钟。   您可以通过属性org.jenkinsci.plugins.gitclient.Git.timeOut更改全局git超时(请参阅JENKINS-11286)。请注意,应在主服务器和从服务器上设置属性才能生效(请参阅JENKINS-22547)。   键入:int

SparseCheckoutPaths:

  

$class: SparseCheckoutPaths   指定您希望稀疏结帐的路径。这可以用于节省空间(想想参考存储库)。请务必使用最新版本的Git,至少高于1.7.10