it-swarm.com.de

groovy.lang.MissingPropertyException: Keine solche Eigenschaft: jenkins für Klasse: groovy.lang.Binding

Wir aktualisieren auf eine neuere Version von Jenkins (2.60.1) und ein grooviges Skript, das in der vorherigen Jenkins-Version (1.596/2) funktionierte, funktioniert nicht mehr.

Dies ist ein Jenkins-Build-Projekt, das parametrisiert ist. Wir verwenden ein Groovy-Skript, um die Auswahlmöglichkeiten für einen Choice-Provider bereitzustellen (der Choice-Provider ist auf "Groovy Choice-Parameter für System" eingestellt).

Wir versuchen, auf die Umgebungsvariablen von Jenkins zuzugreifen, und zwar so (dies ist Teil des Groovy-Skripts):

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']

Beim Ausführen des Skripts wird jedoch die folgende Fehlermeldung angezeigt:

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)

Es scheint mir, dass die Referenz "jenkins" eine eingebaute Eigenschaft ist, die von Jenkins oder vielleicht Groovy bereitgestellt wird, aber ich kann keine Informationen darüber finden, was ich tun muss, um sie über das Groovy-Skript zugänglich zu machen.

Danke für jede Hilfe.

6
Mark Hansen

Wie von @Jayan in einem anderen Beitrag ausgeführt, bestand die Lösung darin, Folgendes zu tun

import jenkins.model.*
jenkins = Jenkins.instance

Dann konnte ich den Rest meines Skripts so machen, wie es war.

5
Mark Hansen

Bitte überprüfen Sie noch einmal, ob Jenkins diesen Import nicht blockiert. Gehen Sie zu den Skriptgenehmigungen und prüfen Sie, ob dies blockiert wird. Wenn es klicken erlaubt.

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

1
Derek Lawrence

Für mich trat dieses Problem auf, weil ich ein ungültiges Zeichen in meinem Groovy-Skript hatte. In unserem Fall war dies eine zusätzliche Leerzeile nach der schließenden Klammer des Skripts.

0
Timothy Hobbs