2017-02-08 6 views
8

Я пытаюсь создать свой первый Groovy скрипт для Jenkins:такого метода DSL `не stages`

Посмотрев здесь https://jenkins.io/doc/book/pipeline/, я создал это:

node { 
    stages { 

    stage('HelloWorld') { 
     echo 'Hello World' 
    } 

    stage('git clone') { 
     git clone "ssh://[email protected]/myrepo.git" 
    } 

    } 
} 

Однако, я получаю:

java.lang.NoSuchMethodError: No such DSL method "stages" found among steps

Что мне не хватает?

Кроме того, как я могу передать свои учетные данные в репозиторий Git без ввода пароля в виде обычного текста?

+0

Моя проблема была только обратной. Я получал сообщение об ошибке «Нет такого метода DSL-метода». –

ответ

23

Вы вводите в заблуждение и смешиваете Scripted Pipeline и Declarative Pipeline, для полной разницы see here. Но короткая история:

  • декларативные трубопроводы новое расширение DSL трубопровода (это в основном сценарий трубопровода только один шаг, шаг трубопровода с аргументами (так называемых директивами), эти директивы должны следовать конкретный синтаксис. Суть этого нового формата является то, что он является более строгим, и для этого должно быть проще для новичков трубопроводов, позволяет для графического редактирования и многий другой.
  • заскриптованных трубопроводы является запасным вариантом для продвинутых требований.

Итак, если мы посмотрим на ваш скрипт, вы сначала откроете шаг node, который находится из сценариев, то вы используете stages, который является одной из директив этапа pipeline, определенного в declarative pipeline. Таким образом, вы можете, например, пишут:

pipeline { 
    ... 
    stages { 
    stage('HelloWorld') { 
     steps { 
     echo 'Hello World' 
     } 
    } 
    stage('git clone') { 
     steps { 
     git clone "ssh://[email protected]/myrepo.git" 
     } 
    } 
    } 
} 

Итак, если вы wan't использовать declarative pipeline, что это путь.

Если вы wan't в scripted pipeline, то вы пишете:

node { 
    stage('HelloWorld') { 
    echo 'Hello World' 
    } 

    stage('git clone') { 
    git clone "ssh://[email protected]/myrepo.git" 
    } 
} 

т.д .: пропустить этапы блок.

+0

Вам не хватает блока шагов вокруг вашего шага «echo» в примере декларативного конвейера. – pmr

+0

Я? У меня есть 'stage ('HelloWorld')', а затем 'echo' ... –

+1

Да, и вам нужно иметь' stage {steps {echo}} '.... – pmr

 Смежные вопросы

  • Нет связанных вопросов^_^