2017-11-08 2 views
0

Wir haben dieses komplexe groovy Skript für jenkins, dass so etwas wieGroovy: Keine solche DSL-Methode ‚ansible‘ unter den Schritten gefunden

def run_pipeline() { 
    try { 
    stage('Build') { 
     sh "docker build . -t ansible" 
    } 
    stage('Linux Common Tag') { 
     def stage_common = [ 
     [tag: 'common', serial: '100%', user: "${env.ANSIBLE_USER}", playbook: 'platform.yml'], 
     ] 

     run_stages(stage_common, serial) 
    } 
} 

def run_stages(stages, serial) { 
    stages.each { phase -> 
    def serial_percent=serial.containsKey(phase.tag) ? serial[phase.tag]: phase.serial 
    ansible(phase.tag, phase.user, phase.password, limit=phase.limit, playbook=phase.playbook, serial=serial_percent) 
    } 

    execute_stages() 
} 

def ansible(tag, user, password, limit='', serial='100%' playbook='platform.yml') { 
    // stuff in here 
} 

sieht Was wir bekommen

ist
java.lang.NoSuchMethodError: No such DSL method 'ansible' found among steps 

Es scheint zu sein, passiert in der run_stages Funktion

Irgendwelche Eingabe auf, was ich falsch mache? Vielen Dank!

+0

Warum die Zuweisung von Parametern beim Aufruf der Funktion? Und die Reihenfolge erscheint anders als in der Funktion definiert. – ipper

+1

In 'run_stages (stage_common, serial)', woher kommt 'serial'? Dein 'try' fehlt ein' catch'/'finally' und schließende Klammern und es gibt ein fehlendes Komma zwischen' serial = '100%' playbook = 'platform.yml''. – mkobit

+0

das fehlende Komma war es .. Wenn Sie es als Antwort hinzufügen möchten, werde ich es akzeptieren – Mike

Antwort

0

Diese Fehlermeldung bedeutet, dass der von Ihnen verwendete Befehl oder "Schritt" nicht gültig ist. Dies liegt entweder daran, dass Sie etwas falsch eingegeben haben, oder ein Plugin ist nicht installiert, das diesen Schritt bietet. Ich nehme an, Sie haben das Ansible-Plugin nicht installiert.

+0

sollte es 'def ansible()' von unten aufrufen – Mike

+0

Ah. Ich habe das ganze Drehbuch nicht genau genug untersucht. –

Verwandte Themen