2017-02-07 2 views
2

Ich habe eine parametrisierte Pipeline mit einem 'String' -Parameter BuildOutDir mit Wert ${WORKSPACE}/out/ gebaut.Umgebungsvariablen über Build-Parameter an Pipeline-Knoten übergeben

Meine Pipeline-Skript ist:

node ('windows') { 
    stage ('Test') { 
     echo "$WORKSPACE" 
     echo "$BuildOutDir" 
     } 
} 

Ausgang ist:

[Pipeline] stage 
[Pipeline] { (Test) 
[Pipeline] echo 
D:\jenkins\workspace\test_pipeline 
[Pipeline] echo 
${WORKSPACE}\out\ 
[Pipeline] } 
[Pipeline] // stage 

Gibt es eine Möglichkeit die Umgebungsvariable als Build-Parameter übergeben zu erweitern? Dies wird in Nicht-Pipeline-Build-Jobs korrekt erweitert.

+1

'Eval.me (" $ BuildOutDir ")' sollte funktionieren ... Aber können Sie nicht einfach '\ out' übergeben und es zu' WORKSPACE' hinzufügen? –

+0

@tim_yates ... Ich habe 'WORKSPACE' als Beispiel für eine Umgebungsvariable verwendet. Ich habe versucht 'Eval.me (" $ BuildOutDir ")', es gibt mir einen Fehler "hudson.remoting.ProxyException: org.codehouse.groovy.control.MultipleCompilationErrorsException: Start fehlgeschlagen: Script1.groovy: 1: unerwartetes Token: @ Zeile 1, Spalte 18. $ {ARBEITSBEREICH}/out/ ^ 1 Fehler '. Nicht sicher, was ich falsch mache. Danke für die Hilfe. – newbie

Antwort

3

Sie zeigen das Skript oder den Job, der diese Pipeline aufruft, nicht an.

Es liegt jedoch sehr wahrscheinlich an der falschen string interpolation. In groovy müssen Sie doppelte Anführungszeichen verwenden, damit Variablen interpoliert (= ersetzt) ​​werden. Wenn Sie stattdessen ein einfaches Anführungszeichen verwenden, wird die Parameterzeichenfolge nicht interpretiert und Ihre Arbeitsbereichsvariable wird nicht ersetzt. Also im Grunde, was Sie tun möchten, ist die folgende Zeile ersetzen:

build job: 'yourPipeline', parameters: [string(name: 'BuildOutDir', value: '${WORKSPACE}')] 

mit:

build job: 'yourPipeline', parameters: [string(name: 'BuildOutDir', value: "${WORKSPACE}")] 

in Ihrem Aufruf Pipeline. Wiederum besteht der einzige Unterschied in den doppelten Anführungszeichen anstelle der einfachen Anführungszeichen um ${WORKSPACE} Variable .

+0

@ Pom12 ......... das obige Skript befindet sich im übergeordneten Job (und keine Downstream-Jobs). Ich benutze 'Parametrized Builds' jenkins plug-in, um Parameter an den Job zu übergeben, wenn er ausgelöst wird. – newbie

+2

Also ist der Elternjob ein Freestyle-Job oder? Dennoch ist hier der Kontext wichtig, bitte geben Sie ein Code-Schnipsel oder einen Screenshot des übergeordneten Jobaufrufs an – Pom12

Verwandte Themen