2016-06-03 3 views
1

Я создал 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" 
     } 
    } 
} 

Затем я создал сцену, которая использует «проверку: 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) 
    } 
} 

В результате в моей консоли вывода был:

МВН -B SCM: контроль -DconnectionUrl = (затемненный) -DcheckoutDirectory = цель/выписка - DscmVersion = [опрос: ложь, СКМ : [: GitSCM, ветви: [[имя: (затемненный)]], doGenerateSubmoduleConfigurations: ложные, расширения: [[: WipeWorkspace]], submoduleCfg: [], userRemoteConfigs: [[credentialsId: (затемненный), URL: ]]]] -DscmVersionType = branch

Похоже, что сопоставления для этапа «checkout» для трубопровода были переданы в качестве параметров для моего пользовательского метода проверки и присвоены свойству scmVersion. Однако я не понимаю, почему? Есть ли способ предотвратить этап проверки конвейера от вызова метода проверки без переименования моего метода проверки?

ответ

1

Я думаю, что вы случайно спрятали встроенный этап checkout с помощью метода с тем же именем. Используйте другое имя метода или используйте steps.checkout для устранения неоднозначности встроенного шага.

0

Я был в состоянии предотвратить такое поведение, изменяя мой контроль() метод

OLD:

Checkout (филиал)

NEW:

проверку (String)

+0

Я ответил на мой вопрос, но если у кого-нибудь есть дополнительная обратная связь, пожалуйста, дайте мне знать. Я думал, что одним из преимуществ Groovy не было определение вашего типа параметра. Я теперь беспокоюсь о том, что другие методы в моем другом Jenkinsfile могут непреднамеренно пересекать пути с шагами конвейера. – mdo123