git checkout的声明性管道功能

时间:2019-07-16 08:46:14

标签: git jenkins jenkins-pipeline git-checkout jenkins-declarative-pipeline

我有一个jenkinsfile,我尝试使用共享库执行。 我的函数(现在可以作为行函数使用)是:

def gitCheckout(gitUrl, creadencialsId = "", branch, scm){
    script {
        echo "inside"
        checkout (
            poll:false,
            scm: [
                $class: 'GitSCM', branches: [[name: "${branch}"]], 
                extensions: scm.extensions,
                submoduleCfg: [],
                userRemoteConfigs: [[refspec: "+refs/heads/${branch}:refs/remotes/origin/${branch}", url: "${gitUrl}", credentialsId: "${credentialsId}"]]
            ]
        )
    }
}

并且我正在尝试将scm.extensions的数组传递进去,以便可以在使用它之前对其进行修改,现在我正在尝试的是:

stage('Get Sources') {
    steps {
        script {
            echo "before extensions"
            scm.extensions = [[$class: 'CloneOption', noTags: true, reference: '', shallow: false], [$class: 'DisableRemotePoll']]
            echo "before git checkout"
            gitCheckout("${gitUrl}", "SSH-for-git", "${params.branch}", scm)
        }
    }
}

但是没有运气! 我找不到任何可以正确使用scm对象的方法。 我尝试过类似的事情

scm.extensions.add([[$class: 'CloneOption', noTags: true, reference: '', shallow: false], [$class: 'DisableRemotePoll']])

scm.extensions += [[$class: 'CloneOption', noTags: true, reference: '', shallow: false]] + [[$class: 'DisableRemotePoll']]

等还是没有运气

0 个答案:

没有答案