Können Hudson-Sklaven Plugins ausführen?

8

Wir haben ein benutzerdefiniertes Plugin für Hudson, das die Ausgabe eines Builds auf einen entfernten Rechner hochlädt. Wir haben gerade begonnen, einen Hudson-Slave zu verwenden, um den Durchsatz von Builds zu verbessern, aber die Projekte, die das benutzerdefinierte Plugin verwenden, können nicht mit FileNotFoundExceptions bereitgestellt werden.

Von dem, was wir sehen können, wird das Plugin auf dem Master ausgeführt, selbst wenn der Build auf dem Slave stattfindet. Die Datei, die nicht gefunden wird, existiert auf dem Slave, aber nicht auf dem Master.

Fragen:

  1. Können Plugins auf Slaves laufen? Wenn das so ist, wie? Gibt es eine Möglichkeit, ein Plugin als serialisierbar zu identifizieren? Wenn Hudson-Sklaven keine Plugins ausführen können, wie erfolgt die SVN-Prüfung?
  2. Einige der Entwickler denken hier, dass die Lösung dieses Problems darin besteht, den Arbeitsbereich des Hudson-Masters zu einem Netzlaufwerk zu machen und den Slave denselben Arbeitsbereich benutzen zu lassen - ist das eine so schlechte Idee, wie es mir scheint?
Rich 14.02.2012, 15:50
quelle

1 Antwort

16

Erstens, geh Jenkins ! ;)

Zweitens haben Sie Recht - der Code wird auf dem Master ausgeführt. Dies ist das Standardverhalten eines Hudson / Jenkins-Plugins.

Wenn Sie Code auf einem Remote-Knoten ausführen möchten, müssen Sie einen Verweis auf die co_de% , z über die VirtualChannel , die wahrscheinlich in die Hauptmethode Ihres Plugins übernommen wurde.

Der Code, der auf dem Remote-Knoten ausgeführt werden soll, sollte in einem Launcher - Dies ist der Teil, der serialisierbar sein muss, da Jenkins ihn automatisch serialisieren, über seinen Kanal an den Knoten übergeben, ausführen und das Ergebnis zurückgeben wird.

Dies verbirgt auch die Unterscheidung zwischen Master und Slave - selbst wenn der Build tatsächlich auf dem Master läuft, wird der "Callable" -Code transparent auf dem richtigen Rechner laufen.

Zum Beispiel:

%Vor%

Siehe auch Callable und sehen Sie sich den Quelltext von andere Jenkins Plugins mit ähnlicher Funktionalität.

Ich würde empfehlen, dass Ihr Plugin ordnungsgemäß funktioniert, anstatt die Netzwerkfreigabe-Lösung zu verwenden ..:)

    
Christopher Orr 14.02.2012, 17:13
quelle

Tags und Links