wake-up-neo.com

So richten Sie einen neuen Jenkins-Slave ein

Ich habe vor kurzem ein Jenkins-gesteuertes Java-Projekt geerbt, bei dem der primäre Entwickler gerade aufgestiegen ist und das Programm beendet hat. Er hatte die Jenkins-WARs auf einer Tomcat-Instanz auf einem virtuellen Server bereitgestellt, und dies wurde als "Build-Server" betrachtet.

Dieser Build-Server hatte einen Slave, der für das Erstellen und Bereitstellen auf einem anderen virtuellen Server, myserver.example.com, konfiguriert wurde. Über das Wochenende haben die Systemmitarbeiter den physischen Server, auf dem myserver.example.com virtual gelebt hat, zurückgezogen, wobei die folgende Ausnahme für jeden Jenkins-Job erzeugt wurde, der für die Bereitstellung auf diesem Slave konfiguriert ist:

enter image description here

Wenn ich auf den Link "See Log for more Details" klicke, sehe ich folgende 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 ist sinnvoll, da der Slave (der virtuelle myserver.example.com) offline ist. Ich habe jedoch keine wirklichen Erfahrungen mit Jenkins. Ich bin mir nicht sicher, welche Schritte erforderlich sind, um den Jenkins-Master so zu konfigurieren, dass er diese Jobs auf einem neuen Slave erstellt bzw. implementiert, und wie der neue Slave eingerichtet wird. Muss ich zum Beispiel etwas auf dem neuen Slave installieren oder irgendeine Art von Setup/Konfiguration vornehmen? Danke im Voraus!

22
IAmYourFaja

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

Die Schritte sind dann:

  1. Klicken Sie auf Neuer Knoten.
  2. Wählen Sie Dumb Slave und geben Sie einen Namen (symbolisch, muss nicht der Domänenname sein, der später kommt)
  3. Klicken Sie auf OK und fahren Sie mit der Konfigurationsseite fort
  4. Geben Sie # ausführende Personen mit der Anzahl gleichzeitiger Prozesse ein, die Sie auf diesem Knoten ausführen möchten (normalerweise nicht mehr als die Anzahl der zugewiesenen CPU-Kerne).
  5. Geben Sie in das Feld Remote FS Root} den vollständigen Pfad ein, an dem Jenkins seine Arbeitsdateien speichern soll
  6. Fügen Sie optional Labels hinzu, wenn Sie die in Ihrem System verwenden (in vielen Fällen nicht erforderlich, aber für Ihre Projekte müssen Knoten für bestimmte Jobs bestimmte Labels enthalten).
  7. Wählen Sie Slave-Agenten auf Unix-Maschinen über SSH starten unter Launch-Methode (falls nicht bereits ausgewählt).
  8. Geben Sie den vollständig qualifizierten Domänennamen in das Feld Host ein, das in der Zeile Launch Method angezeigt wird

Es gibt einige Annahmen über die Tools, die auf dem Slave installiert sind. Wenn Sie über spezialisierte Tools verfügen, müssen Sie sie möglicherweise separat installieren (oder Plug-Ins betrachten, die das Verschieben von Tools unmittelbar vor der Ausführung ausführen). Wenn Ihre Knoten jedoch aus einer Vorlage aufgebaut sind, auf der sich all Ihre Build-Tools befinden (Java, Ant usw. in Ihrem Fall wahrscheinlich), müssen Sie dies nur tun, um die Dinge in Gang zu setzen.

35
gaige

Ich bin auf das gleiche Problem gestoßen wie Sie. In meinem Fall hatte ich keinen SSH-Server unter Ubuntu installiert.

0
ChrisAdkin