Случайное переопределение шагов конвейера доставки с использованием Jenkinsfile
Я создал Jenkinsfile и добавил метод для проверки репо:
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"
}
}
}
Затем я создал этап, который использует этап конвейера "checkout: General 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 = (обфусцировано) -DcheckoutDirectory = target / checkout -DscmVersion = [опрос: ложь, scm:[:GitSCM, филиалы:[[name:(obfuscated)]], doGenerateSubmoduleConfigurations:false, расширения:[[:WipeWorkspace]], submoduleCfg:[], userRemoteConfigs:[[credentialsId:(обфусцированный), url:]]]] -DscmVersionType = branch
Таким образом, кажется, что сопоставления для шага конвейера "checkout" были переданы в качестве параметров в мой пользовательский метод checkout и назначены свойству scmVersion. Хотя я не понимаю, почему? Есть ли способ, чтобы шаг проверки конвейера не вызывал мой метод checkout без переименования моего метода checkout?
2 ответа
Я думаю, что вы случайно спрятали встроенный checkout
шаг с методом с тем же именем. Используйте другое имя метода или используйте steps.checkout
устранить неоднозначность встроенного шага.
Я смог предотвратить это поведение, изменив метод checkout()
OLD:
контроль (филиал)
NEW:
оформить заказ (строковая ветвь)