2017-02-08 3 views
8

Ich versuche, meine erste Groovy Skript für Jenkins zu erstellen:keine solche DSL-Methode `stages

Nach einem Blick hier https://jenkins.io/doc/book/pipeline/, habe ich dies:

node { 
    stages { 

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

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

    } 
} 

Aber ich bin immer:

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

Was bin ich?

Wie kann ich meine Zugangsdaten auch an das Git Repository übergeben, ohne das Passwort im Klartext zu schreiben?

+0

Mein Problem war nur das Gegenteil davon. Ich bekam den Fehler "keine solche DSL-Methode' Schritte' " –

Antwort

23

Sie sind verwirrt und mischen Scripted Pipeline und Declarative Pipeline, für den vollständigen Unterschied see here. Aber die kurze Geschichte:

  • deklarative Pipelines ist eine neue Erweiterung der Pipeline DSL (es ist im Grunde ein Pipeline-Skript mit nur einem Schritt, eine Pipeline Schritt mit Argumenten (so genannten Richtlinien), sollten diese Richtlinien einen folgen spezifischen Syntax. der Punkt dieses neuen Formats ist, dass es strenger ist und daher sollte für diejenigen, die mit Rohrleitungen einfacher sein, ermöglichen die grafische Bearbeitung und vieles mehr.
  • scripted Pipelines ist der Rückfall für erhöhte Anforderungen.

Also, wenn wir Ihr Skript betrachten, öffnen Sie zuerst einen node Schritt, der aus Skript-Pipelines stammt, dann verwenden Sie stages, was eine der Anweisungen des pipeline Schritts ist, der in declarative pipeline definiert ist. So können Sie zum Beispiel schreiben:

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

Also, wenn Sie wan't declarative pipeline zu verwenden, die den Weg zu gehen.

Wenn Sie wan't zu scripted pipeline, dann schreiben Sie:

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

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

Z. B .: überspringen die Stufen blockieren.

+0

Sie vermissen einen Schrittblock um Ihren 'Echo'-Schritt im deklarativen Pipeline-Beispiel. – pmr

+0

Bin ich? Ich habe die 'stage ('HelloWorld')' und dann 'echo' ... –

+1

Ja, und Sie müssen 'Bühne {Schritte {Echo}}' .... – pmr