1

我创建了一个 Jenkinsfile 并添加了一个方法来签出一个 repo:

 def checkout(branch){
    sshagent (credentials: ['ssh-jenkins-default']) {
        withEnv(["PATH+MAVEN=${tool 'Maven 3.3'}/bin","connectionUrl=scm:git:${SCM_URL}", "MAVEN_OPTS=-Duser.home=${WORKSPACE}"]) {
            sh "mvn -B scm:checkout -DconnectionUrl=${env.connectionUrl} -DcheckoutDirectory=target/checkout -DscmVersion=${branch} -DscmVersionType=branch"
        }
    }
}

然后,我创建了一个使用“结帐:通用 SCM ”管道步骤的阶段。

if (BRANCH_NAME ==~ /someregex}/){
    stage name: 'DEPLOY' , concurrency: 1
    node {
        ws("${WORKSPACE}"){
            checkout poll: false, scm: [$class: 'GitSCM', branches: [[name: '${BRANCH_NAME}']],
                doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'WipeWorkspace']],
                    submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'ssh-jenkins-default', url: '${SCM_URL}']]]
        deploy(BRANCH_NAME)
    }
}

我的控制台输出的结果是:

mvn -B scm:checkout -DconnectionUrl=(obfuscated) -DcheckoutDirectory=target/checkout -DscmVersion=[poll:false, scm:[:GitSCM, branches:[[name:(obfuscated)]], doGenerateSubmoduleConfigurations:false, extensions: [[:WipeWorkspace]], submoduleCfg:[], userRemoteConfigs:[[credentialsId:(obfuscated), url:]]]] -DscmVersionType=branch

因此,管道步骤“结帐”的映射似乎作为参数传递给我的自定义结帐方法并分配给 scmVersion 属性。我不明白为什么?有没有办法防止管道结帐步骤调用我的结帐方法而不重命名我的结帐方法?

4

2 回答 2

1

checkout我认为您不小心使用同名方法隐藏了内置步骤。使用不同的方法名称,或用于steps.checkout消除内置步骤的歧义。

于 2016-06-06T12:16:00.053 回答
0

我可以通过修改我的 checkout() 方法来防止这种行为

老的:

结帐(分行)

新的:

结帐(字符串分支)

于 2016-06-03T21:58:00.213 回答