web-dev-qa-db-fra.com

groovy.lang.MissingPropertyException: Aucune de ces propriétés: jenkins pour la classe: groovy.lang.Binding

Nous passons à une version plus récente de Jenkins (2.60.1) et un script groovy qui fonctionnait dans la version précédente de Jenkins (1.596/2) ne fonctionne plus.

Il s'agit d'un projet de génération Jenkins, qui est paramétré et nous utilisons un script Groovy pour fournir les choix d'un fournisseur de choix (le fournisseur de choix est défini sur Paramètre de choix System Groovy).

Nous essayons d'avoir accès aux variables d'environnement Jenkins et le faisons comme ceci (cela fait partie du script Groovy):

import hudson.slaves.EnvironmentVariablesNodeProperty
import hudson.EnvVars

EnvironmentVariablesNodeProperty prop = jenkins.getGlobalNodeProperties().get(EnvironmentVariablesNodeProperty.class)
EnvVars env = prop.getEnvVars()

def MY_VAR = env['MY_JENKINS_VAR']

Toutefois, l'erreur suivante s'affiche lors de l'exécution du script:

Failed to execute script

groovy.lang.MissingPropertyException: No such property: jenkins for class: groovy.lang.Binding
at groovy.lang.Binding.getVariable(Binding.Java:63)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.Java:224)

Il me semble que la référence "jenkins" devrait être une propriété intégrée fournie par Jenkins ou peut-être Groovy, mais je ne trouve aucune information sur ce que je dois faire pour le rendre accessible à partir du script Groovy.

Merci pour toute aide.

6
Mark Hansen

Comme l'a souligné @Jayan dans un autre article, la solution consistait à procéder comme suit:

import jenkins.model.*
jenkins = Jenkins.instance

Ensuite, j'ai pu faire le reste de mon script comme il était.

5
Mark Hansen

Veuillez vérifier que jenkins ne bloque pas cette importation. Accédez aux approbations de script et vérifiez si cela le bloque. Si c'est cliquer, autoriser.

https://jenkins.io/doc/book/managing/script-approval/

1
Derek Lawrence