2017-02-08 4 views
0

Ich versuche, Befehle in Jenkins groovy Skript unten auszuführen.Immer FATAL: Keine Signatur der Methode: hudson.model.FreeStyleBuild.call() Fehler

import hudson.model.* 

def buildA = build("Master-Build") 
println(buildA.getProject().getLastSuccessfulBuild()) 

und ich bin immer unten Fehler

00: 00: 00,652 FATAL: Keine Signatur der Methode: hudson.model.FreeStyleBuild.call() ist für Argumenttypen: (java .lang.String) Werte: [Master-Build] 00: 00: 00.652 Möglich Lösungen: wait(), save(), any(), warte (lang), jeweils (groovy.lang.Closure), any (groovy.lang.Closure) 00: 00: 00.652 groovy.lang.MissingMethodException: Keine Signatur der Methode: hudson.model.FreeStyleBuild.call() ist anwendbar für die folgenden Argumenttypen: (java.lang.String) Werte: [Master-Build]

Wie kann ich das beheben?

+0

Ist das alles Code, den Sie in Ihrem Skript haben, oder hast du irgendetwas vor dem 'def buildA = ...', besonders etwas, das 'build' zuweist, zB:' build = ... '? –

+0

Egal, Miss Lese, Wo rufst du das aus Build Flow Job Definition oder einem Build-Schritt des Typs 'Execute groovy script'? –

Antwort

2

Mit Blick auf den Fehler sieht es so aus, als ob Sie Execute system Groovy script Build-Schritt in einem Freestyle-Build aufrufen. Wenn Sie groovy in diesem Schritt verwenden, ist die Variable build für den aktuellen Build vordefiniert und keine Funktion zum Erstellen anderer Jobs (Sie haben sie möglicherweise mit den vordefinierten Funktionen/Variablen in Build Flow Job verwechselt, wobei die Variable build eine Funktion ist startet einen neuen Build).

Also, um einen neuen Build zu starten, müssen Sie direkt die Jenkins Instanz zugreifen und sagen, dass es einen neuen Job zu starten (inspired by this script):

// Import Jenkins 
import jenkins.model.Jenkins; 
// Get Jenkins instance 
def j = Jenkins.getInstance(); 
// Get the job we wan't to trigger 
def job = j.getItem("B"); 
// Finally we schedule a new build which starts directly (the zero in the argument) 
job.scheduleBuild2(0) 
Verwandte Themen