2014-05-13 10 views

Antwort

8

Jeder Build verfügt über einen Arbeitsbereich, so dass Sie zuerst das gewünschte Projekt finden müssen. (Die Begriffe "Job" und "Projekt" werden in Jenkins ziemlich austauschbar verwendet - auch in der API.)

Danach können Sie entweder die Daumen drücken und einfach getWorkspace() anrufen, was veraltet ist (siehe JavaDoc für Details) .

Oder Sie können einen bestimmten Build (zum Beispiel der letzten) finden, die Ihnen den Arbeitsplatz für diesen speziellen Build über die getWorkspace() Methode geben können, wie es in der AbstractBuild Klasse definiert ist.

Beispielcode:

Jenkins.instance.getJob('<job-name>').lastBuild.workspace; 
7

Wenn Sie eine Datei mit dem Namen „a.txt“ in Ihrem Arbeitsplatz sowie ein Skript namens „sysgvy.groovy“, die Sie groovy als System ausgeführt werden soll Skript. Angenommen, Ihr Skript "sysgvy.groovy" muss die Datei "a.txt" lesen.

Das Problem dieses Themas ist, dass, wenn Ihr Skript direkt "a.txt" ohne Angabe eines Pfades liest, "sysgvy.groovy" ausgeführt wird und eine Fehlermeldung mit der Meldung "a.txt" nicht finden kann.

Ich habe getestet und festgestellt, dass die folgende Methode gut funktioniert.

def build = Thread.currentThread().executable 

Dann

build.workspace.toString()+"\\a.txt" 

als die volle Lage Zeichenfolge verwenden "a.txt" zu ersetzen.

Es ist auch wichtig, auf dem Jenkins-Master-Rechner zu laufen, indem Sie "a.txt" und "sysgvy.groovy" in den Jenkins-Master-Rechner-Arbeitsbereich legen. Die Ausführung auf dem Slave-Rechner funktioniert nicht.

Probieren Sie es aus, die Datei sollte gefunden und im Skript ohne Probleme gelesen werden.

Wenn ein Problem mit variablen Thread besteht, müssen nur einige Module importiert werden. Also füge diese Zeilen zum Anfang des Codes hinzu:

import jenkins.* 
import jenkins.model.* 
import hudson.* 
import hudson.model.* 
+0

filename = build.workspace.toString() + "/ a.txt"; myFile = neue Datei (Dateiname); data = myFile.readLines(); Druckdaten; – gaoithe

+0

groovy.lang.MissingPropertyException: Keine solche Eigenschaft: ausführbar für Klasse: java.lang.Thread – saikosen

Verwandte Themen