2013-04-18 12 views
12

Sto cercando di invocare Groovy all'interno di Hudson (utilizzando il plugin Groovy) per ottenere alcune proprietà per la nostra build. Ma io sono sempre questa eccezione:groovy.lang.MissingPropertyException: Nessuna proprietà di questo tipo: manager per la classe: Script1

groovy.lang.MissingPropertyException: No tale proprietà: manager per classe: script1

ottengo questo con la seguente riga:

def buildNUmber = manager.build.number 

Questo accade quando corro come comando linea all'interno Jenkins nonché utilizzando uno script:

ho provato la soluzione qui di seguito, ma non riesce durante la dichiarazione stessa (linea due):

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); 

Quanto sopra viene eseguito utilizzando: comando Groovy. E quando ho eseguito gli errori costruirla e lamenta la linea - binding.setVariable("manager", manager);

Quando uso il file di script Groovy, allora si lamenta:

def buildNumber = manager.build.number 

Entrambi gli errori sono: groovy.lang.MissingPropertyException: No tali beni: manager per classe: script1

provato tutto ciò di cui in questo thread così:

sto usando Hudson 2.2.1 e 2.1.3 Groovy. Cosa potrebbe esserci di sbagliato?

+0

Mi sono stancato nella console di script e non ci riesce con la stessa eccezione. – avijendr

risposta

1

Forse mi manca qualche parte del codice, ma dove si definisce il gestore? Se questo è lo script Groovy completo, stai cercando di associare una variabile che non è dichiarata nulla, quindi non è strano che fallisca, giusto?

basta definire un manager è che è ciò che si vuole, come:

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

e dovrebbe dovrebbe essere sbarazzarsi del vostro errore corrente.

+0

Mi spiace di non poterlo fare in quanto il gestore è un valore che dovremmo ottenere dall'istanza di Hudson. – avijendr

+1

Capisco, ma sembra che tu stia cercando di eseguire uno script Groovy da solo, invece di usare https://wiki.jenkins-ci.org/display/JENKINS/Groovy+Postbuild+Plugin, basato su GroovyShell.execute (comando). –

19

manager viene fornito da alcuni plugin di script Groovy, ma non tutti. Per rendere il vostro Script generico, utilizzare l'API Jenkins/Hudson invece:

import hudson.model.* 

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

Ottimo! Come si ottiene il nome del lavoro dalla variabile di costruzione? Posso vedere la build contiene il nome del lavoro e il numero di build, ma non so come stamparlo.Ho provato tutti i tipi di combinazioni – webDeveloper

+0

Una volta che hai creato l'oggetto che puoi fare. . . 'jobname = build.getEnvVars() ["JOB_NAME"]' 'workspace = build.getEnvVars() ["WORKSPACE"]' – gaoithe

3

Solo nel caso aiuta, se si utilizza il 'Esegui sistema Groovy Script', non c'è bisogno di utilizzare il 'manager' variabile. Questo ha funzionato per me -

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

Aiuta. Grazie. '' 'def JOB_NAME = build.getEnvVars() ["JOB_NAME"]' '' poi più tardi in html usa $ JOB_NAME. – gaoithe

+0

Grazie, mi ha aiutato! – dams

0

Una delle ragioni groovy.lang.MissingPropertyException: viene generata quando si utilizza una variabile al di fuori della sua portata o non è stata definita quella variabile.

Problemi correlati