2016-04-29 6 views
25

Ich mache gerade eine Evaluierung des Jenkins-Pipeline-Plugins (früher bekannt als Workflow-Plugin). Lesen der Dokumentation ich, dass ich zur Zeit nicht auf den Arbeitsbereich Pfad env.WORKSPACE mit Retriev herausgefunden:Absoluter Pfad zum Arbeitsbereichsverzeichnis im Jenkins-Pipeline-Plugin

Die folgenden Variablen zur Zeit in einem Workflow-Skript nicht verfügbar sind:

NODE_LABELS

ARBEITSBEREICH

SCM-spezifische Variablen wie SVN_REVISION

Gibt es eine andere Möglichkeit, wie der absolute Pfad zum aktuellen Arbeitsbereich abgerufen werden kann? Ich brauche das Ausführen eines Tests, der wiederum einen Parameter erhält (absoluter Pfad zu einer ausführbaren Datei). Ich habe bereits versucht new File("").absolutePath() in einem @NonCPS Abschnitt, aber sieht aus wie die non-CPS Zeug immer auf dem Master ausgeführt wird.

Hat jemand eine Ahnung, wie man diesen Pfad ohne mit einem Batch-Skript, das den Pfad in eine Datei speichert, die später wieder eingelesen werden kann?

Antwort

8

Seit Version 2.5 der Pipeline Nodes and Processes Plugin (eine Komponente des Pipeline-Plugins, standardmäßig installiert), ist die Umgebungsvariable WORKSPACE wieder verfügbar. Diese Version wurde am 23.09.2016 veröffentlicht und sollte daher auf allen aktuellen Jenkins-Instanzen verfügbar sein.

28

Hinweis: Diese Lösung funktioniert nur, wenn die Slaves die gleiche Verzeichnisstruktur wie der Master haben. pwd() wird aufgrund von JENKINS-33511 das Arbeitsbereich-Verzeichnis auf dem Master zurückgeben.

Ich habe es mit pwd() Funktionalität von Pipeline-Plugin zu tun. Also, wenn Sie einen Arbeitsbereich auf Slave benötigen, können Sie Smth wie folgt tun:

Ich hoffe, es wird helfen.

+0

Verdammt. Brauche wahrscheinlich ein paar Gläser. Total verpasst, dass pwd() verfügbar ist. Genau das habe ich gesucht. Vielen Dank! –

+0

Und noch, nach der Diskussion in [dieses Ticket] (https://issues.jenkins-ci.org/browse/JENKINS-33511), wird 'pwd()' das Arbeitsverzeichnis des Masters zurückgeben, nicht das Knoten, auf dem Sie sind. –

+0

Eine Tatsache, die ich gerade von mir selbst bestätigt habe. 'pwd()' arbeitet _nicht_ an Slaves, außer wenn sie die gleiche Verzeichnisstruktur wie der Master haben. –

0

Wenn Sie ein Skript verwenden, ist das Konzept des Arbeitsbereichs bedeutungslos. Am besten verwenden Sie readFile, um die Datei in eine Zeichenfolge einzulesen und diese Zeichenfolge dann zur Verarbeitung an Ihre Bibliothek zu übergeben. Die Methode pwd() kann Ihnen nicht helfen, da sie auf dem Master ausgeführt wird und Ihre Dateien auf dem Knoten gespeichert werden.

Verwandte Themen