Jenkins es un software de Integración Continua open source escrito en Java, basado en el proyecto Hudson. Al igual que otras aplicaciones, se despliega en un servidor, como Apache Tomcat. Soporta herramientas de control de versiones como CVS, Subversion, Git, etc., y puede ejecutar proyectos basados en Apache Ant y Apache Maven, así como scripts de shell y programas batch de Windows .
En el artículo de hoy (Primeros Pasos con Jenkins) veremos una breve introducción a la herramienta, comenzando por el proceso de instalación del software para, más adelante, ver cómo configurar nuestro entorno de trabajo. La instalación/configuración se realizará en un sistema Windows (Windows 7), aunque los pasos aquí seguidos serían análogos (aunque obviamente con sus matices) a los que habría que seguir bien para una versión posterior Windows o bien para un sistema Linux. Por cierto, por si fuera de tu interés, aquí te dejo el enlace al primero de los artículos de nuestro curso de WordPress.
Tabla de contenidos
Instalación de Jenkins
En primer lugar, accedemos a «https://jenkins.io/download/» y nos descargamos la versión de Jenkins acorde con nuestro sistema operativo. En nuestro caso, instalaremos la versión 2.89.2 para Windows.
Se nos descargará un archivo «jenkins-2.89.2.zip», que contendrá un instalable «jenkins.msi». Lo extraemos y lo ejecutamos, manteniendo los valores de instalación por defecto.
Con esto ya tendríamos instalado Jenkins. Para comprobarlo, abrimos un navegador y tecleamos «http://localhost:8080». Lo primero que nos aparece es una pantalla de Jenkins nos indica la ubicación en el disco duro (en mi caso, «C:\Program files (x86)\Jenkins\secrets\initialAdminPassword») de la clave de administrador generada por defecto.
Accedemos a dicha ubicación, copiamos la clave indicada y la pegamos en la cajita donde pone «Administrator password». Pulsamos sobre «Continue». Ahora nos aparece la pantalla de bienvenida de Jenkins.
Vamos instalar los plugins de Jenkins más populares. Para ello, pulsamos sobre la caja de la izquierda y esperamos que los plugins se vayan instalando.
Una vez instalados, nos aparece la ventana de creación del usuario administrador. Rellenamos los datos y pulsamos sobre «Save and Finish».
Y ya estaría instalado Jenkins, así que ya solo quedaría ponernos manos a la obra y empezar a utilizarlo.
Configuración del puerto de despliegue
Esta sería la pantalla de inicio de Jenkins, a la que se accedería con la URL «http://localhost:8080».
Antes de empezar a crear tareas en Jenkins, una buena práctica sería cambiar el puerto por defecto sobre el que tenemos desplegada nuestra plataforma. Por defecto, Jenkins se despliega en el puerto «8080», lo que puede crear conflictos si, por ejemplo, en nuestra máquina queremos desplegar también un servidor tomcat (y queremos mantener éste en el puerto «8080»).
Todo esto se configura en el archivo «C:\Program Files (x86)\Jenkins\jenkins.xml» (esto dependerá obviamente de la ruta donde hayamos instalado nuestro Jenkins). El archivo original tiene el siguiente contenido:
<!– The MIT LicenseCopyright (c) 2004-2017, Sun Microsystems, Inc., Kohsuke Kawaguchi, Oleg Nenashev, and other Jenkins contributorsPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the «Software»), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.THE SOFTWARE IS PROVIDED «AS IS», WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. –><!– Windows service definition for Jenkins.To uninstall, run «jenkins.exe stop» to stop the service, then «jenkins.exe uninstall» to uninstall the service. Both commands don’t produce any output if the execution is successful. –> <service> <id>Jenkins</id> <name>Jenkins</name> <description>This service runs Jenkins automation server.</description> <env name=»JENKINS_HOME» value=»%BASE%»/> <!– if you’d like to run Jenkins with a specific version of Java, specify a full path to java.exe. The following value assumes that you have java in your PATH. –> <executable>%BASE%\jre\bin\java</executable> <arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar «%BASE%\jenkins.war» –httpPort=8080 –webroot=»%BASE%\war»</arguments><!– interactive flag causes the empty black Java window to be displayed. I’m still debugging this. <interactive /> –> <logmode>rotate</logmode><onfailure action=»restart» /> <!– In the case WinSW gets terminated and leaks the process, we want to abort these runaway JAR processes on startup to prevent corruption of JENKINS_HOME. So this extension is enabled by default. –> <extensions> <!– This is a sample configuration for the RunawayProcessKiller extension. –> <extension enabled=»true» className=»winsw.Plugins.RunawayProcessKiller.RunawayProcessKillerExtension» id=»killOnStartup»> <pidfile>%BASE%\jenkins.pid</pidfile> <stopTimeout>10000</stopTimeout> <stopParentFirst>false</stopParentFirst> </extension> </extensions> <!– See the referenced examples for more options –></service> |
He sobre-impresionado en negrita la línea que nos interesa, la que ataña a los «arguments». Antes de editarla, recomiendo realizar una copia de seguridad del archivo, por lo que pudiera pasar (más vale ser precavidos). Yo, por ejemplo, he realizado una copia del archivo en la misma carpeta, y lo he renombrado a «jenkins.xml.old».
Y ahora ya sí, sin miedo, editamos la línea en el archivo «jenkins.xml»:
- Valor antiguo: <arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar «%BASE%\jenkins.war» –httpPort=8080 –webroot=»%BASE%\war»</arguments>
- Valor nuevo: <arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar «%BASE%\jenkins.war» –httpPort=9090 –webroot=»%BASE%\war»</arguments>
Lo que hemos hecho ha sido editar el parámetro «–httpPort» para indicarle un valor «9090», que será el puerto en el que desplegaremos nuestro Jenkins. Al tratarse de un archivo de solo lectura, el sistema no nos deja actualizarlo de esta manera, así que lo que haremos será copiar el fichero a otra ubicación donde tengamos permisos de escritura (por ejemplo, el escritorio), editarlo ahí, y luevo «volcarlo» sobre el directorio de Jenkins.
Nos pedirá permisos de administrador para actualizar la carpeta. Pulsamos sobre «Continuar» y, ahora sí, ya podemos actualizar el archivo.
Ya casi lo tenemos, pero aún nos faltaría un detalle importante para acceder a Jenkins por el puerto 9090 (o el que hayamos configurado): quedaría reiniciar el propio Jenkins. Para ello, accedemos al navegador y tecleamos «http://localhost:8080/restart». Nos parece entonces una pantalla de confirmación como la que vemos en la siguiente imagen. Pulsamos sobre «Sí».
Aparece entonces una pantalla de espera, durante la cual Jenkins procede al reinicio.
Como hemos cambiado el puerto, el reinicio nos redirige entonces a una página que no existe.
Si, ahora, cambiamos la URL de acceso por «http://localhost:9090», accederíamos a la pantalla de acceso, en la que teclearíamos los datos del usuario administrador que configuramos anteriormente.
Y ya estaríamos de nuevo dentro de Jenkins, con el puerto que deseábamos.
Instalación del plugin de Maven
Lo primero que vamos a hacer es instalar el plugin de Maven, el cual, a nuestro juicio, es básico para trabajar con Jenkins (aunque esto dependerá del tipo de proyectos con el que suela trabajar cada uno). Desde la pantalla de bienvenida, pulsamos sobre «Administrar Jenkins».
A continuación nos aparece una pantalla con las distintas opciones de administración de Jenkins. Pulsamos sobre «Administrar Plugins».
Si recordamos, al acceder por primera vez a Jenkins, seleccionamos la opción de instalar los plugins más populares. Para instalar el resto, accederíamos a esta sección. La primera pestaña nos indica el listado de actualizaciones disponibles para los plugins que tengamos instalador actualmente (en nuestro caso, como acabamos de instalarlos, no aparece ninguno).
Pulsamos sobre la pestaña «Todos los plugins», desde la cual buscaremos el plugin que queremos instalar (el de maven).
Para ello, en la parte superior derecha tenemos una cajita para realizar un filtrado por nombre: tecleamos «maven».
Buscamos el plugin «Maven Integration plugin», que normalmente aparecerá al final del listado. Lo seleccionamos y pulsamos sobre «Instalar sin reiniciar».
Se lanzará entonces el proceso de instalación del plugin. Esperamos que finalice y pulsamos sobre «Volver al inicio de la página».
De nuevo en la pantalla de bienvenida, pulsamos ahora sobre «Nueva Tarea».
Jenkins nos lleva entonces a la pantalla de configuración inicial de la nueva tarea, en la que se nos pide que le asignemos un nombre, y un listado de ítems en la parte inferior en la que debemos indicar el tipo de tarea que será. En la imagen vemos que, como segundo ítem, aparece «Crear un proyecto maven». Si no hubiéramos instalado el plugin anterior, dicho ítem no aparecería.
Antes de crear nuestra tarea de tipo «proyecto maven», hemos de configurar el propio Maven desde Jenkins. Realizaremos la configuración de Maven y de otros aspectos de nuestro Jenkins en la siguiente sección.
Configuración del entorno de trabajo
Desde la pantalla de bienvenida, pulsamos de nuevo sobre «Administrar Jenkins».
Ahora pulsamos sobre «Global Tool Configuration».
Desde esta pantalla configuraremos lo que podemos llamar el «núcleo» de nuestro Jenkins: JDK (para la creación de programas en Java), Git (para control de versiones) y Maven (para la gestión y construcción de proyectos). Para cada uno de estos aspectos, existe la correspondiente sección en esta pantalla, además de otras para Gradle, Ant y Docker.
En la sección «JDK», pulsamos sobre «Añadir JDK». Tecleamos en primer lugar un nombre para nuestro JDK, por ejemplo «JDK_Jenkins».
Vemos que aparece marcado el check de «Instalar automáticamente», indicándonos la opción de descarga de «java.sun.com» de la última versión de Java disponible (actualmente, la «9.0.1»). En mi caso, ya tengo instalada una versión 8 con la que estoy trabajando en otros de mis proyectos, así que voy a desmarcar esta opción y voy a configurar la versión de Java la que tengo instalada. Al desmarcar la opción de descarga, se habilita una cajita para introducir el JAVA_HOME. Como tengo la versión 8 de Java update 151, tecleo la ruta correspondiente («C:\Program Files\Java\jdk1.8.0_151»).
Pasamos a la siguiente sección, la de Git. Queda fuera del ámbito de este tutorial el explicar esta herramienta, pero comentar simplemente que nos ofrece un sistema muy práctico de gestión de repositorios para nuestros proyectos (ver «https://github.com/»). Aquí simplemente tecleamos un nombre (por ejemplo «Git_Jenkins») e indicamos la ruta del ejecutable «Git.exe» en nuestra máquina (en mi caso, «C:\Program Files\Git\bin\git.exe»).
Por último, configuraremos nuestro Maven. En la sección correspondiente, pulsamos sobre «Añadir Maven».
Tecleamos en primer lugar un nombre, como por ejemplo «Maven_Jenkins». Como vemos, al igual que con el JDK, aparece marcado un check «Instalar automáticamente», que nos da la opción de instalar automáticamente desde Apache la versión 3.5.2 (la última disponible en ese momento).
Como yo ya la tengo instalada, lo que haré será desmarcar esta casilla e introducir la ruta en mi sistema del home de Maven (en este caso, «C:\Program Files (x86)\apache-maven-3.5.2»).
Y ya estaría todo. Pulsamos «Save» en la parte inferior de nuestra pantalla de configuración, lo que nos llevaría de nuevo a la pantalla de administración de Jenkins.
Sorprendente post. Gracias por compartirlo…Espero màs…
Saludos
Muchas gracias!! Me alegro de que te haya gustado. Saludos