2017-11-03 7 views
0

Wir haben eine Jenkins bauen, die erfolgreich auf Jenkins läuft 1.596.2, die wir auf eine neue Maschine zu bauenWie kann ich jenkins Umgebungsvariablen aus Groovy Skripte bauen

Im Rahmen der laufenden Jenkins 2.60.1 migrieren Build-Konfiguration haben wir einen Extensible Choice-Parameter und verwenden den System Groovy Choice Parameter als Choice Provider. Wir verwenden dann ein Groovy-Skript, um die Auswahlliste zu erhalten.

Dieses Groovy-Skript benötigt Zugriff auf eine der Jenkins-Build-Umgebungsvariablen, die im Abschnitt Globale Eigenschaften der Build-Konfiguration (unter Umgebungsvariablen) festgelegt sind.

Unter der früheren Version von Jenkins, konnten wir diesen Umgebungsvariable Wert mit dem folgenden Code erhalten:

import hudson.slaves.EnvironmentVariablesNodeProperty 
import hudson.EnvVars 

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

def myVariable = env['MY_VAR'] 

Wenn wir jedoch diese unter der neuen Jenkins bauen laufen, wir die folgende Fehlermeldung erhalten:

groovy.lang.MissingPropertyException: No such property: jenkins for class: Script1 

Kann jemand bitte erklären, was wir tun müssen, Zugriff auf die Jenkins zu bekommen Umgebungsvariablen aus dem Groovy-Skripte bauen?

Vermissen wir ein Plugin oder einen Import, der Zugriff auf das "jenkins" Objekt/Variable bietet?

Ich habe online ein paar Antworten gefunden, aber keine der Lösungen funktioniert. Ich nehme an, dass mein Groovy-Skript keinen Zugriff auf etwas hat, das für diese Lösungen benötigt wird.

Übrigens, wenn das Problem ist, dass etwas eingeschränkt ist, gehe ich auf die In-Prozess-Skript-Genehmigungsseite des Servers und erlaube das Element.

+0

es nicht ausprobiert, aber sollte nicht 'EnvironmentVariablesNodeProperty prop = jenkins.getGlobalNodeProperties () .get (EnvironmentVariablesNodeProperty.class) 'sein:' EnvironmentVariablesNodeProperty prop = Jenkins.instance.getGlobalNodeProperties(). get (EnvironmentVariablesNodeProperty) ' –

+0

Ich bekomme immer noch den Fehler Keine solche Eigenschaft: Jenkins ... In der früheren Version ist es codiert, wie ich oben gezeigt habe und dieser Code läuft - nur nicht auf der neuen Version von Jenkins. Ich bin mir nicht sicher, ob es nur an der Version von Jenkins liegt, oder an einem fehlenden Plugin oder etwas anderem. –

Antwort

0

ich folgenden Code hatte ..

import hudson.model.BuildableItem 
import hudson.model.Job 
import jenkins.model.*; 


jenkins = Jenkins.instance; 

Dies wurde in einigen neueren (2.60.3) Version von Jenkins verwendet

+0

Das war die Lösung die mir fehlte. Vielen Dank, @Jayan. –