2013-04-18 3 views
12

Ich versuche, Groovy in Hudson (mit groovy-Plugin) aufrufen, um einige Eigenschaften für unseren Build zu bekommen. Aber ich bin immer diese Ausnahme:groovy.lang.MissingPropertyException: Keine solche Eigenschaft: Manager für Klasse: Script1

groovy.lang.MissingPropertyException: Keine solche Eigenschaft: Manager für die Klasse: Script1

ich dies mit der folgenden Zeile:

def buildNUmber = manager.build.number 

Dies geschieht, wenn ich laufe als Inline-Befehl innerhalb Jenkins sowie mit einem Skript:

ich die Lösung unten versucht, aber es funktioniert nicht in der Erklärung selbst (Linie zwei):

Binding binding = new Binding(); 
binding.setVariable("manager", manager); 
GroovyShell shell = new GroovyShell(binding); 
shell.evaluate(new File("d:/dev/others/hudson/userContent/ScriptStuff.groovy").text); 

Der obige Befehl wird ausgeführt mit: Groovy-Befehl. Und wenn ich die Build es Fehler und beschwert sich über die Linie laufen - binding.setVariable("manager", manager);

Wenn ich die Groovy-Skriptdatei verwenden, dann klagt er über sich selbst:

def buildNumber = manager.build.number 

Beide Fehler sind: groovy.lang.MissingPropertyException: Nein solche Eigenschaft: Manager für die Klasse: Script1

Versuchte alles in diesem thread erwähnt auch:

ich verwende Hudson 2.2.1 und Groovy 2.1.3. Was könnte falsch sein?

+0

Ich müde in der Skriptkonsole und es schlägt dort mit der gleichen Ausnahme. – avijendr

Antwort

1

Vielleicht fehlt mir ein Teil Ihres Codes, aber wo definieren Sie den Manager? Wenn das das komplette Groovy-Skript ist, versuchst du eine Variable zu binden, die nichts deklariert, also ist es nicht komisch, dass es schief geht, oder?

definieren Sie einfach einen Manager es das ist, was Sie wollen, wie:

def manager = "my manager" // probably not what you want 

Und sollte sollte Ihrer aktuellen Fehler loswerden.

+0

Tut mir leid, ich kann das nicht tun, da der Manager ein Wert ist, den wir von Hudson-Instanz bekommen sollten. – avijendr

+1

Ich verstehe, aber es scheint, dass Sie versuchen, ein Groovy-Skript selbst auszuführen, anstatt https://wiki.jenkins-ci.org/display/JENKINS/Groovy+Postbuild+Plugin, basierend auf der GroovyShell.execute () Befehl. –

19

manager wird von bestimmten Groovy-Skript-Plugins bereitgestellt, aber nicht von allen. Um Ihr Skript generic, verwenden Sie das Jenkins/Hudson API statt:

import hudson.model.* 

def build = Thread.currentThread().executable 
def buildNumber = build.number 
... 
+1

Großartig! Wie erhalten Sie Job-Name von Build-Variable? Ich kann sehen, dass Build Jobname und Buildnummer enthält, aber nicht wissen, wie es gedruckt wird.Versucht alle Arten von Kombinationen – webDeveloper

+0

Sobald Sie Build-Objekt können Sie tun. . . 'jobname = build.getEnvVars() ["JOB_NAME"]' 'workspace = build.getEnvVars() ["ARBEITSBEREICH"]' – gaoithe

3

Nur für den Fall hilft es, wenn Sie die verwenden ‚Ausführen-System Groovy Script‘, Sie brauchen nicht auf die ‚Manager‘ zu verwenden, Variable. Dieser arbeitete für mich -

def workspace = build.getEnvVars()["WORKSPACE"] 
+1

Es hilft. Vielen Dank. '' 'def JOB_NAME = build.getEnvVars() ["JOB_NAME"]' '' und später in HTML $ JOB_NAME. – gaoithe

+0

Danke dir, es hat mir geholfen! – dams

0

Einer der Gründe groovy.lang.MissingPropertyException: wird ausgelöst, wenn Sie eine Variable außerhalb ihres Anwendungsbereichs oder Sie haben nicht diese Variable definiert.

Verwandte Themen