Cómo configurar un nuevo esclavo Jenkins


Recientemente heredé un proyecto Java dirigido por Jenkins donde el desarrollador principal simplemente subió y salió. Había desplegado la GUERRA de Jenkins a una instancia de Tomcat en un servidor virtual, y eso es lo que se consideraba el "servidor de compilación".

Este servidor de compilación tenía un esclavo configurado para compilar e implementar en myserver.example.com, otro servidor virtual. Durante el fin de semana, el personal de sistemas retiró el servidor físico en el que vivía myserver.example.com virtual, produciendo la siguiente excepción para cualquier Jenkins trabajo configurado para implementar en ese esclavo:

introduzca la descripción de la imagen aquí

Cuando hago clic en el enlace " Ver registro para más detalles " Veo la siguiente salida de consola:

[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.

Esto tiene sentido, ya que el esclavo (el virtual myserver.example.com) está desconectado. Sin embargo, al no tener experiencia previa real con Jenkins, no estoy seguro de cuáles son los pasos adecuados para configurar el maestro Jenkins para construir / implementar estos trabajos en un nuevo esclavo, y cómo configurar el nuevo esclavo. Por ejemplo, ¿necesito instalar cualquier cosa en el nuevo esclavo, o hacer cualquier tipo de instalación/config? Gracias de antemano!

Author: IAmYourFaja, 2013-03-18

2 answers

Agregar un esclavo en Jenkins es bastante simple. Básicamente, si está utilizando un esclavo unix, necesita acceso SSH a la máquina. También necesita tener instalado el plugin Jenkins SSH Slaves. Una vez que tenga eso, vaya a la opción Manage Jenkins en su Master y elija Manage Nodes.

Los pasos son entonces:

  1. Haga clic en Nuevo nodo
  2. Seleccione Esclavo tonto y darle un nombre (simbólico, no necesita ser el nombre de dominio, que viene después)
  3. Haga clic en Aceptar y vaya a la página de configuración
  4. Rellene el # de ejecutores con el número de procesos simultáneos que desea ejecutar en ese nodo (generalmente no más que el número de núcleos de CPU asignados)
  5. Rellene el Raíz remota de FS con la ruta completa a donde desea que Jenkins almacene sus archivos de trabajo
  6. Opcionalmente agregue Etiquetas si las está utilizando en su sistema (no es necesario en muchos casos, pero sus proyectos pueden requerir que los nodos tengan ciertas etiquetas para estar en el grupo de ejecutores para trabajos específicos)
  7. Seleccione Inicie agentes esclavos en máquinas Unix a través de SSH bajo Método de lanzamiento (si no está ya seleccionado)
  8. Coloque el nombre de dominio completo en el campo Host que aparece bajo la línea Launch Method

Hay algunas suposiciones sobre las herramientas que se instalan en el esclavo. Si tienes herramientas especializadas, es posible que tenga que instalarlos por separado (o mirar los complementos que manejan mover las herramientas inmediatamente antes de la ejecución). Sin embargo, si sus nodos están construidos a partir de una plantilla que tiene todas sus herramientas de compilación en ellos (java, ant, etc en su caso probablemente), entonces esto será todo lo que necesita hacer para que las cosas funcionen.

 35
Author: gaige,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-06 17:11:42

Me encontré con el mismo problema que usted, en mi caso esto fue porque no había instalado un servidor ssh en Ubuntu.

 0
Author: ChrisAdkin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-04 22:03:35