2016-03-29 20 views
1

Ich verwende das Jenkins-Plugin EnvInject, um eine Umgebungsvariable während eines Build-Schritts in unserer Bereitstellungspipeline festzulegen. Das nächste Projekt (gemäß der Reihenfolge) ist ein manueller Schritt zum Bereitstellen. Ich muss auf eine Umgebungsvariable zugreifen, die im Build-Schritt festgelegt wurde.Umgebungsvariable vom vorherigen Build abrufen

Nach der Konsolenausgabe ich richtig mache:

[EnvInject] - Executing scripts and injecting environment variables after the SCM step. 
[EnvInject] - Injecting as environment variables the properties content 
FOR=%%i IN ("%NewFile%") DO (SET FileName=%%~ni) 
FILE_NAME=%FileName% 

[EnvInject] - Variables injected successfully. 

jedoch in meinem nächsten Schritt, wo ich die $FILE_NAME Variable, um den Zugriff muß die richtigen Ordner zu scp angeben, aus ich das bekommen folgende Ausgabe:

[SCP] No file(s) found: releases\$FILE_NAME\* 

Gibt es eine Einstellung, die ich vermisse oder versuche ich auf die Variable falsch zuzugreifen?

Ich sehe diese Option unten - "Inject Umgebungsvariable" - aber das ist der gleiche Schritt, den ich zuvor verwendet habe, um die $FILE_NAME Variable zu erstellen. Wenn das der richtige Schritt ist ... Wie benutze ich es um die Variable zu bekommen? :)

EDIT

Durch die Optionen unten zu klicken ...

enter image description here

... Ich bin in der Lage, die folgenden Ausgaben in der Konsole zu erhalten, wenn das Projekt aufbaut.

[EnvInject] - Loading node environment variables. 
[EnvInject] - Preparing an environment for the build. 
[EnvInject] - Keeping Jenkins system variables. 
[EnvInject] - Keeping Jenkins build variables. 
[EnvInject] - Injecting contributions. 
[EnvInject] - Unset unresolved 'USERNAME' variable. 

Allerdings kann ich immer noch nicht auf $FILE_NAME zugreifen. Unten ist die Option, die ich gewählt habe, um die Variable im vorherigen Build-Schritt zu setzen.

enter image description here

Und hier ist das Skript, das in den „Eigenschaften Inhalt“ geht: ich für den letzten Dateinamen suchen

FOR /F "delims=|" %%I IN ('DIR "C:\Jenkins\workspace\Project\releases\*.nupkg" /B /O:D') DO SET NewFile=%%I 
FOR %%i IN ("%NewFile%") DO (SET FileName=%%~ni) 
FILE_NAME = %FileName% 
+0

Die Fehlermeldung gibt es Ihren Dateinamen als Ordner nimmt. Haben Sie die Konfiguration und die Dokumentation der Felder erneut überprüft? (das "?" neben ihnen an der Seite) –

+0

Es soll als der Ordnername verwendet werden (es wird als ein Dateiname an anderer Stelle im vorherigen Schritt verwendet). Ich werde in das "?" Dokumentation. – NealR

+0

Wenn ich andere Umgebungsvariablen verwende, wird der Wert in der Konsolenausgabe angezeigt. Es scheint, als würde es '$ FILE_NAME' nicht als Umgebungsvariable erkennen. – NealR

Antwort

1

In einem früheren Build-Schritt. In diesem Schritt habe ich einfach Ausgang die aktuelle Version der Datei mit wie so arbeite ich:

@echo FILE_NAME=%FileName%>CurrentVersion.txt 

Dann füge ich eine „Inject Umgebungsvariablen“ bauen Schritt und Punkt in die Ausgabedatei. Dies fügt die Umgebungsvariable hinzu, wie ich es mir erhofft hatte.

enter image description here

Verwandte Themen