Jenkins permite conectar nodos esclavos (slave nodes) con diferentes Sistemas Operativos (Windows, GNU/Linux, Mac OS, Unix etc...) Los nodos esclavos son los encargados de ejecutar los Jobs en Jenkins para distribuir la carga entre los equipos y el servidor Jenkins es quién realiza la orquestación de las tareas.
Seguid leyendo y os enseñaré cómo podéis conectar nuevos nodos Windows a vuestro servidor de Jenkins...
¿QUÉ ES JENKINS?
Jenkins es un servidor de automatización open source escrito en Java. Está basado en el proyecto Hudson y es, dependiendo de la visión, un fork del proyecto o simplemente un cambio de nombre.
Jenkins ayuda en la automatización de parte del proceso de desarrollo de software mediante integración continua y facilita ciertos aspectos de la entrega continua. Admite herramientas de control de versiones como CVS, Subversion, Git, Mercurial, Perforce y Clearcase y puede ejecutar proyectos basados en Apache Ant y Apache Maven, así como secuencias de comandos de consola y programas por lotes de Windows. Publicado bajo licencia MIT, Jenkins es software libre.
Principales características:
- Puede orquestar cualquier tipo de proceso.
- Utilizada para ejecutar tareas manuales, periódicas o automáticas.
- Cuenta con más de 1400 plugins
- Puede aumentar su capacidad de cómputo añadiendo nuevos agentes o servidores
- Fácil de usar
- Dashboard para visualizar estado de tareas.
También es posible utilizar Jenkins para:
- Permite ejecución de procesos secuenciales
- Monitoreo de procesos
- Permite ejecución a horas determinadas
- Ejecución en base a eventos
- Ejecución distribuida en varias máquinas
- Alertas ante problemas en algún proceso
Web: https://jenkins.io/
Jenkins permite tener nodos esclavos funcionando con Windows
1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL
- Un PC con Jenkins ( v2.222.1 en este ejemplo )
- Otro PC con Windows ó una VM para hacer como cliente
- Conexión a Internet (casi imprescindible)
2.- AÑADIR NODO EN JENKINS
Para añadir un nuevo nodo, deberemos entrar como Administradores en Jenkins, y en el menú izquierdo hacer click en "Administrar Jenkins":
Administrar Jenkins
Una vez dentro del panel de administración, deberemos buscar la opción de "Administrar Nodos" y hacer click para continuar:
Administrar Nodos
En el listado de nodos esclavos, haremos click en "Nuevo nodo" para añadir el nuevo equipo junto a su configuración:
Añadir nuevo nodo
En el siguiente paso, introduciremos el nombre del equipo. Es preferible no utilizar espacios aunque si es posible hacerlo. En este ejemplo, el nombre de nuestro nodo cliente será Windows_Nodo_1 y marcaremos el nodo como Permanente y haremos click en OK:
Nombre del nodo y tipo
En la siguiente pantalla, introduciremos los siguientes datos y haremos click en "Guardar":
- Nombre: Windows_Nodo_1
- Número de ejecutores: 1
- Directorio raíz remoto: C:\Jenkins
- Usar: Dejar este nodo para ejecutar solamente tareas vinculadas a él.
- Método de ejecución: Conectar el agente cliente desde el cliente al master
- Disponibilidad: Mantener conectado el agente lo máximo posible
Configuración del nodo
Una vez añadido el nuevo nodo, podremos verlo en el listado de nodos pero con una cruz roja que significa que está desconectado:
Listado de nodos
3.- CONFIGURACIÓN DEL NODO ESCLAVO
Para conectar el nodo cliente Windows al nodo Master de Jenkins, haremos click primero en el nuevo nodo en Jenkins y así poder ver como conectar el nodo. El método JNLP ha quedado deprecado y no podremos seleccionarlo desde la administración de Jenkins, por tanto, hay que conectarlo de otra forma que explicaré a continuación.
Info para conectar el esclavo al servidor
En el nodo cliente, deberemos ir a la página web https://repo.jenkins-ci.org/releases/com/sun/winsw/winsw/ y descargar la última versión de Winsw. En este ejemplo la versión utilizada ha sido la 2.4.0:
Descargar Winsw
Guardaremos el fichero bajado en el directorio C:\Jenkins\ (debe coincidir en el directorio remoto configurado en el nodo cliente de Jenkins) y le cambiaremos el nombre a jenkins-slave.exe:
Winsw 2.4.0 NET Framework 4
Antes de instalar winsw como servicio, es necesario instalar varias cosas en el nodo cliente:
Si instalamos winsw-2.4.0-bin.exe, deberemos instalar Java JDK o JRE. En este ejemplo se instaló JDK 1.8.0_u241. Si instalamos winsw-2.4.0-net4.exe, deberemos instalar aparte de Java JDK o JRE, Microsoft NET Framework 4.0 o superior. El paquete JDK/JRE debemos descargarlo desde la Web Oficial de Oracle.
Una ves que tenemos todo instalado, crearemos un fichero llamado jenkins-slave.xml dentro de C:\Jenkins con el siguiente contenido (tened en cuenta que hay parámetros que debéis adaptar) por ejemplo, el nombre del nodo, la version de Java, la URL de Jenkins...
<service>
<id>Jenkins_Slave</id>
<name>Jenkins_Slave</name>
<description>This service runs a slave for Jenkins continuous integration system.</description>
<executable>C:\Program Files\Java\jdk1.8.0_241\bin\java.exe</executable>
<arguments>-Xrs -Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8 -jar "%BASE%\agent.jar" -jnlpUrl http://192.168.1.49:8080/computer/Windows_Nodo_1/slave-agent.jnlp -secret a8c3b02687b554bf141fe4b340eeed052d8156a12381d384d8fd767a8037872c</arguments>
<logmode>rotate</logmode>
<onfailure action="restart" />
</service>
Abriremos un CMD como Administrador y ejecutaremos el siguiente comando para instalar el servicio de Jenkins en el esclavo:
jenkins-slave install
Instalar servicio de Jenkins
Podemos arrancar el servicio desde la lista de servicios de Windows ejecutando services.msc ó bien desde el CMD con "jenkins-slave start".
Iniciar servicio
El comando jenkins-slave.exe dispone de mas opciones que pueden ser visualizadas con el comando /?:
Opciones de jenkins-slave.exe
En el directorio C:\Jenkins\ se guardarán los logs donde podemos ver el procedo del agente de Jenkins. En este ejemplo se puede ver como el agente conecta correctamente:
Logs
En Jenkins podremos ver el siguiente mensaje que indica que el nodo esclavo está conectado "Agent is connected":
Nodo conectado a Jenkins
En el listado de nodos podremos ver el estado de todos los nodos conectados al servidor de Jenkins:
Listado de nodos
ENJOY!