2017-10-19 11 views
0

Ich versuche die untere Zeile in meiner Jenkins-Pipeline. Im folgenden Satz von Zeilen weise ich die Variable IMAGE_NAME in einer Shell zu und versuche, darauf im Jenkins-Pipelineskript zuzugreifen, aber nicht in der Lage, das zu tun. Irgendeine Idee, wie man das macht?Zugriff auf Shell-Variable aus Jenkins-Pipeline

stage('Build: Get Image') { 
    steps { 
     echo 'Getting docker image' 
     sh "IMAGE_NAME=`grep -ri \"Successfully built\" 
      $BUILD_FILE_NAME | awk \'{print \$3}\'`" 
     echo "Image Name is:$IMAGE_NAME" 
    } 
} 
+0

Ob die globalen Umgebungsvariablen jenkins ausgesetzt sind oder nicht, hängt ziemlich viel, wie Sie Starten Sie Jenkins und wie diese Variablen definiert sind. Geben Sie den Befehl "env" in jenkins step aus, um zu sehen, welche Variablen verfügbar sind. Auch wie startest du jenkins und wie/wo definierst du diese Variable ?? –

+0

Ich habe ein env erstellt, aber es wurde IMAGE_NAME nicht angezeigt. Aber heute nach vielen Kämpfen habe ich das Problem herausgefunden. Am Ende der IMAGE_NAME-Daten war ein \ r \ n Zeichen. Also habe ich mit dem folgenden Befehl \ r \ n abgezogen, mit printf in der awk und es hat gut funktioniert. Vielen Dank sh "IMAGE_NAME =' grep -ri \ "erfolgreich erstellt \" $ BUILD_FILE_NAME | awk \ '{printf \ "% s \" \ $ 3} \' "" –

Antwort

0

Sie können es als env Variable definieren:

env.some_var = 'AAAA' 

und Drucken:

sh 'echo ${env.some_var}' 
Verwandte Themen