web-dev-qa-db-fra.com

groovy.lang.MissingPropertyException: aucune propriété de ce type: gestionnaire pour la classe: Script1

J'essaie d'invoquer Groovy dans Hudson (en utilisant le plugin groovy) pour obtenir des propriétés pour notre build. Mais je reçois cette exception:

groovy.lang.MissingPropertyException: aucune propriété de ce type: gestionnaire pour la classe: Script1

J'obtiens ceci avec la ligne suivante:

def buildNUmber = manager.build.number

Cela se produit lorsque je lance une commande en ligne dans Jenkins ainsi que l'utilisation d'un script:

J'ai essayé la solution ci-dessous, mais elle échoue lors de la déclaration elle-même (ligne deux):

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

Ce qui précède est exécuté à l'aide de la commande: Groovy. Et quand j'exécute la construction, il génère des erreurs et se plaint de la ligne - binding.setVariable("manager", manager);

Lorsque j'utilise le fichier de script Groovy, il se plaint de:

 def buildNumber = manager.build.number

Les deux erreurs sont: groovy.lang.MissingPropertyException: aucune propriété de ce type: gestionnaire pour la classe: Script1

J'ai également essayé tout ce qui est mentionné dans ce thread :

J'utilise Hudson 2.2.1 et Groovy 2.1.3. Qu'est-ce qui ne va pas?

18
Aneesh Vijendran

Peut-être que je manque une partie de votre code, mais où définissez-vous le gestionnaire? Si c'est le script Groovy complet, vous essayez de lier une variable qui n'est rien déclarée, donc ce n'est pas bizarre qu'elle échoue, non?

Définissez simplement un gestionnaire, c'est ce que vous voulez, comme:

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

Et devrait être débarrassé de votre erreur actuelle.

2
Erik Pragt

manager est fourni par certains plugins de script Groovy, mais pas tous. Pour rendre votre script générique, utilisez plutôt l'API Jenkins/Hudson:

import hudson.model.*

def build = Thread.currentThread().executable
def buildNumber = build.number
...
19
Craig

Au cas où cela aiderait, si vous utilisez le 'Execute System Groovy Script', vous n'avez pas besoin d'utiliser la variable 'manager'. Cela a fonctionné pour moi -

def workspace = build.getEnvVars()["WORKSPACE"]
6
mmukhe

L'une des raisons groovy.lang.MissingPropertyException: est levée lorsque vous utilisez une variable en dehors de sa portée ou que vous n'avez pas défini cette variable.

3
Maverick