2017-02-08 16 views
8

Próbuję stworzyć swoją pierwszą Groovy skrypt Jenkins:żadna taka metoda DSL `stages`

Po pobycie tutaj https://jenkins.io/doc/book/pipeline/, stworzyłem ten:

node { 
    stages { 

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

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

    } 
} 

Jednak Dostaję:

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

Czego mi brakuje?

Ponadto, w jaki sposób mogę przekazać swoje dane uwierzytelniające do repozytorium Git bez wpisywania hasła w postaci zwykłego tekstu?

+0

Mój problem był tylko odwrotnością tego. Otrzymałem błąd "brak takiej metody DSL" kroki " –

Odpowiedz

23

Jesteś zagmatwany i mieszanie Scripted Pipeline i Declarative Pipeline, dla całkowitej różnicy see here. Ale opowiadanie:

  • deklaratywne rurociągi jest nowym rozszerzeniem DSL rurociągu (to jest w zasadzie skrypt rurociąg z tylko jednym kroku, krok rurociągu z argumentów (zwanych dyrektyw), dyrektywy te powinny postępować zgodnie ze specyficzna składnia. Celem tego nowego formatu jest to, że jest bardziej ścisła i do nich powinno być łatwiejsze dla tych nowych rurociągów, pozwalają na edycję graficzną i wiele więcej.
  • oskryptowane rurociągi jest awaryjna dla zaawansowanych wymagań.

Tak więc, jeśli przyjrzymy się twojemu skryptowi, najpierw otwórz krok node, który pochodzi ze skryptowych potoków, a następnie używasz stages, która jest jedną z dyrektyw kroku pipeline zdefiniowanego w declarative pipeline. Dzięki czemu można na przykład napisz:

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

więc jeśli wan't użyć declarative pipeline że jest droga.

Jeśli wan't scripted pipeline, a następnie napisać:

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

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

Np .: pominąć etapy zablokować.

+0

Brakuje bloku kroków wokół kroku' echo' w deklaratywnym przykładzie potoku. – pmr

+0

Czy jestem? Mam 'stage ('HelloWorld')', a następnie 'echo' ... –

+1

Tak, i musisz mieć' stage {steps {echo}} '.... – pmr