2017-03-14 2 views
0

Ich habe eine parametrisierte Build wie unten:Jenkins: Wie Parameter in einem parametrisierte Job zuzugreifen

enter image description here

dann habe ich ein starkes Skript erstellen Sie eine Variable URL_TOMCAT wo sein Wert ist abhängig von der TARGET_TOMCAT zu erstellen Parameter:

Auch nach dieser Update i den gleichen Fehler bekam

import hudson.model.* 
def target = build.buildVariableResolver.resolve("TARGET_TOMCAT") 
def URL_TOMCAT = "" 
switch(target) { 
    case "tomcat1": URL_TOMCAT= "http://localhost:8080/manager/text" 
    break 
    case "tomcat2": URL_TOMCAT = "http://localhost:8089/manager/text" 
    break 
} 

Dann mag ich den URL_TOMCAT Wert erhalten und den Maven-Build-Schritt einstellen, wie gezeigt: enter image description here

Aber ich diesen Fehler hätte: enter image description here

Hat jemand auf einer Idee, wie man diese Fehler zu beheben?

+0

Versuch 'Schalter (params.TARGET_TOMCAT) {' –

+0

@tim_yates Ihren Vorschlag mit i den gleichen Fehler bekam ohne mentionning TARGET_TOMCAT wie vor Erwischt: groovy.lang.MissingPropertyException: Keine solche Eigenschaft: hudson für Klasse: hudson3514035310831211964 –

Antwort

1

In Ihrem groovigen Skript müssen Sie einen API-Aufruf machen, um den Wert des Parameters von Jenkins in Ihren Arbeitsbereich zu bekommen.

Import hudson.model 

def targetTomcat = build.buildVariableResolver.resolve("TARGET_TOMCAT") 

def URL_TOMCAT = "" 
switch(targetTomcat) { 
    case "tomcat1": URL_TOMCAT = "http://localhost:8080/manager/text" 
    break 
    case "tomcat2": URL_TOMCAT = "http://localhost:8089/manager/text" 
    break 
} 

Ich möchte darauf hinweisen, dass die URL_TOMCAT Variable nicht auf andere buildsteps verfügbar sein, es ist scoped nur die groovy Build-Schritt zu. Wenn Sie Ihre URL_TOMCAT Variable dem Rest des Builds zugänglich machen möchten, müssen Sie sie irgendwie der Build-Umgebung aussetzen. Ich tue dies in der Regel durch den Wert in eine Datei als Schlüsselwertpaar zu schreiben und mit dem EnvInject Plugin

Sie es in eine Datei in groovy schreiben können wie so:

def workspace = build.buildVariableResolver.resolve("WORKSPACE") 
new File("${workspace}\\Environment.Variables").write("URL_TOMCAT=${URL_TOMCAT}") 

Wenn Sie nicht wollen, Schreiben Sie es in den Job-Arbeitsbereich. Sie können diesen Wert überspringen und nur einen bestimmten Pfad eingeben.

Fügen Sie nach dem Groovy-Build-Schritt einen Envinject-Build-Schritt hinzu und geben Sie den Pfad zu der Datei mit dem Schlüsselwertpaar im Feld Eigenschaften-Dateipfad ein. Sie sollten URL_TOMCAT wie jede andere Umgebungsvariable im Rest des Builds referenzieren können. Fortfahrend mit dem ungefähren Pfad würde ich ${WORKSPACE}\Environment.Variables als den Pfad verwenden.

Verwandte Themen