2013-03-18 13 views
20

Ich habe vor kurzem ein Jenkins-getriebenes Java-Projekt geerbt, bei dem der Hauptentwickler gerade aufgestockt und gekündigt hat. Er hatte die Jenkins WAR auf einer Tomcat-Instanz auf einem virtuellen Server installiert, und das war der "Build-Server".Wie man einen neuen Jenkins-Slave einrichtet

Dieser Build-Server verfügt über einen Slave, der zum Erstellen und Bereitstellen eines anderen virtuellen Servers für myserver.example.com konfiguriert ist. Am Wochenende zog sich die Systeme Personal den physischen Server, der die myserver.example.com auf virtuellen gelebt, konfiguriert die folgende Ausnahme für jede Jenkins Job produzieren zu diesem Slave zu implementieren:

enter image description here

Wenn ich auf den "See log, um weitere Informationen "link ich sehe die folgenden Konsolenausgabe:

[03/18/13 08:13:31] [SSH] Opening SSH connection to myserver.example.com:22. 
java.io.IOException: There was a problem while connecting to myserver.example.com:22 
    at com.trilead.ssh2.Connection.connect(Connection.java:755) 
    at com.trilead.ssh2.Connection.connect(Connection.java:546) 
    at hudson.plugins.sshslaves.SSHLauncher.openConnection(SSHLauncher.java:650) 
    at hudson.plugins.sshslaves.SSHLauncher.launch(SSHLauncher.java:283) 
    at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:200) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 
Caused by: java.net.NoRouteToHostException: No route to host 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351) 
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) 
    at java.net.Socket.connect(Socket.java:529) 
    at com.trilead.ssh2.transport.TransportManager.establishConnection(TransportManager.java:342) 
    at com.trilead.ssh2.transport.TransportManager.initialize(TransportManager.java:450) 
    at com.trilead.ssh2.Connection.connect(Connection.java:699) 
... 9 more 
[03/18/13 08:13:34] [SSH] Connection closed. 

Dies macht Sinn, da der Slave (der myserver.example.com virtuellen) offline ist. Da ich jedoch keine wirklichen vorherigen Erfahrungen mit Jenkins gemacht habe, bin ich mir nicht sicher, welche Schritte zum Konfigurieren des Jenkins-Masters zum Erstellen/Bereitstellen dieser Jobs für einen neuen Slave und zum Einrichten des neuen Slaves erforderlich sind. Muss ich zum Beispiel irgendetwas auf dem neuen Slave installieren oder irgendeine Art von Setup/Konfiguration vornehmen? Danke im Voraus!

Antwort

33

Hinzufügen eines Sklaven in Jenkins ist ziemlich einfach. Wenn Sie einen Unix-Slave verwenden, benötigen Sie grundsätzlich SSH-Zugriff auf den Rechner. Sie müssen auch das Jenkins SSH Slaves-Plugin installiert haben. Sobald Sie das haben, gehen Sie zu Manage Jenkins Option auf Ihrem Master und wählen Sie Knoten verwalten.

Die Schritte sind dann:

  1. Klicken Sie Neuer Knoten
  2. Select Dumb Slave und gibt ihm einen Namen (symbolisch, muss nicht der Domain-Name sein, das kommt später)
  3. Klicken Sie auf OK und auf die Konfigurationsseite
  4. Füllen Sie das Anzahl der Testamentsvollstrecker mit der Anzahl der gleichzeitigen Prozesse gehen Sie wollen auf diesem Knoten (in der Regel nicht mehr als die Anzahl der zugeordneten CPU-Kerne)
  5. Füllen Sie das Remote-FS Wurzel mit dem vollständigen Pfad zu laufen, wo Sie Jenkins wollen ihre Arbeitsdateien hinzufügen
  6. Optional speichern Labels wenn Sie diese in Ihrem System verwenden (in vielen Fällen nicht notwendig, aber Ihre Projekte erfordern möglicherweise, dass bestimmte Etiketten für bestimmte Aufträge im Pool von Executoren enthalten sind)
  7. Wählen Sie Starten Sie die Slave-Agenten auf Unix-Maschinen über SSH unter Startmethode (falls nicht bereits ausgewählt)
  8. Setzen Sie den vollständig qualifizierten Domänennamen in der Host- Feld, das

dort unter der Leitung Startart erscheint es einige Annahmen über die Werkzeuge, die auf dem Slave installiert sind.Wenn Sie über spezialisierte Tools verfügen, müssen Sie diese möglicherweise separat installieren (oder Sie sollten sich Plugins ansehen, mit denen bewegte Tools unmittelbar vor der Ausführung bearbeitet werden). Wenn Ihre Knoten jedoch aus einer Vorlage bestehen, in der alle Ihre Build-Tools enthalten sind (in Ihrem Fall wahrscheinlich Java, Ant usw.), dann brauchen Sie nur noch diese Dinge zu tun.

+1

@TheTerribleSwiftTomato Danke für die Plugin-Erinnerung. – gaige

+0

Ich habe jenkins.war-Datei auf Tomcat, die auf meinem Linux-Rechner ausgeführt wird.Ich musste Slave auf Windows-Rechner.Aber ich kann nicht tun.Sie Jenkins Slave-Fenster auf Slave-Shows versuchen, eine Verbindung, aber nicht angeschlossen werden Hilfe, was genau ich im siebten Schritt oben genannten tun muss –

+0

Ich habe versucht, jenkins.war ohne Tomcat und es war in der Lage, Slave auf Windows-Maschine Setup.Aber ich brauche jenkins auf Tomcat laufen.Bitte helfen –

0

Ich stieß auf das gleiche Problem, das Sie getan haben, in meinem Fall war dies, weil ich keinen SSH-Server auf Ubuntu installiert hatte.

Verwandte Themen