我创建了一个Jenkins文件,并添加了一个检查仓库的方法:
if(APEX_CUSTOM_AUTH.IS_SESSION_VALID) then
/*your code here*/
end if;
然后我创建了一个使用" 结帐的舞台:General SCM "管道步骤。
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"
}
}
}
我的控制台输出中的结果是:
mvn -B scm:checkout -DconnectionUrl =(混淆) -DcheckoutDirectory = target / checkout - DscmVersion = [poll:false,scm:[:GitSCM,branches:[[name:(obfuscated)]], doGenerateSubmoduleConfigurations:假的, 扩展:[[:WipeWorkspace]],submoduleCfg:[], userRemoteConfigs:[[credentialsId :(混淆),url:]]]] -DscmVersionType =分支
所以看来管道步骤的映射" checkout"作为参数传递给我的自定义checkout方法并分配给scmVersion属性。我不明白为什么呢?有没有办法阻止管道检出步骤调用我的checkout方法而不重命名我的checkout方法?
答案 0 :(得分:1)
我认为您不小心使用相同名称的方法隐藏了内置checkout
步骤。使用其他方法名称,或使用steps.checkout
消除内置步骤的歧义。
答案 1 :(得分:0)
我能够通过修改checkout()方法来防止这种行为
OLD:
结帐(分支)
NEW:
checkout(String branch)