Zugriff auf Dateien auf einem slave-Knoten von Jenkins-master mit Groovy
Ich bin mit dem Jenkins Build-Flow-plugin zu erreichen, Parallelisierung. Die Groovy-DSL bestimmte Datei-Operationen. Obwohl die option Restrict where this project can be run
eingestellt ist, um die Arbeit auf einem bestimmten slave, der DSL läuft auf master. Dies ist nicht beabsichtigt.
Könnte mir jemand sagen, wie ich einschränken kann, das DSL laufen auf den angegebenen slave? Selbst wenn es einen Weg gibt, können wir auf die slave-Datei-system über DSL, das sollte funktionieren.
Im Allgemeinen, wie können wir den Zugriff auf Dateien auf einem slave-Knoten von Jenkins-master mit Groovy?
def fp = new hudson.FilePath(build.workspace.channel, "/srv/jenkins/workspace/myworkspace_on_slave_node")
assert fp.exists() //returns true :)
def ant = new AntBuilder()
if (fp != null) {
def scanner = ant.fileScanner { //fails here :(, says /srv/jenkins/workspace/myworkspace_on_slave_node not found
//grab ALL files requested to be run
fileset(dir: "$fp", includes: "**/*.java")
}
//now lets iterate over - print - and count test files
int numFiles = 0
for (f in scanner) {
println("Found file $f")
numFiles++
}
println("Total files $numFiles")
}
Arbeitsbereich gibt es auf der slave-Knoten, aber der obige code ist fehlerhaft, wenn ich versuche, öffnen Sie das FileSet auf dem remote-FilePath.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Groovy-DSL erfolgt immer auf master (in Kater-Verzeichnis). Sogar, wenn Sie die Installation - Knoten-Parameter "Label" plugin und stellen build-job ausgeführt werden, die bei bestimmten slave. Wenn Sie möchten, um den Zugriff von Groovy-DSL zum job Arbeitsbereich auf slave können Sie Kanal. Es ist mein Beispiel, erstellen Sie eine Datei im build-flow-job-Arbeitsbereich:
Einen einfacheren Weg, ist die Ausführung von Datei-Operationen in downstream-jobs in Ausführung von Groovy (nicht im build-flow job) unter bestimmten slave. Sie müssen die node-plugin installiert und übergeben slave-name als parameter im DSL-Skript:
bauen("jobA", paramNode: "nodename")
Den Workflow-Plugin "Ursprünglich inspiriert durch die Bauen-Flow-Plugin" hat den folgenden Abschnitt in seine tutorial:
Die folgende Frage in der Build-Flow-Plugin die Kommentare nicht beantwortet, da Jan 27, 2014:
Installieren NodeLabel parameter plugin. Es Bietet parameter-option Label.
Dann mit diesem parameter können Sie in Ihrer DSL-Skript zu übergeben, node-Namen oder einen Wert.