Nuestra actual serie de posts se centra en la migración de SonarQube y Jenkins de Tomcat, a una instalación en servicios de Windows.
Ya hemos visto cómo realizar esta migración para SonarQube sin dejar de trabajar con Jenkins en Tomcat, es decir, sin perder nuestro repositorio SonarQube, el dashboard, los resultados de análisis, los perfiles. También sin perder la capacidad de lanzar proyectos configurados en Jenkins, y por lo tanto sin perder ningún tipo de plugins instalados, incluyendo el plugin del SonarQube Runner.
Hoy vamos a ver cómo migrar Jenkins a un servicio de Windows. Y finalmente poder deshacernos de Tomcat.
Mi configuración
Primero, un recuerdo de los parámetros de mi configuración con este articulo de Qualilogy: Instalación SonarQube con Jenkins. De hecho, no tengo exactamente la configuración usual por defecto, ya que elegí instalar Tomcat en el puerto 8888 (para evitar conflictos con softwares que se instalan por defecto en el puerto 8080):
Además, elegí un directorio de trabajo específico, y vamos a ver que esto tendrá un impacto en el futuro.
Te recomiendo que hagas una copia de seguridad antes de realizar cualquier operación. Y también detener Tomcat para evitar que nos mezclamos entre nuestras diferentes instalaciones Jenkins.
Instalar Jenkins en un servicio Windows
Si vamos a la página principal de Jenkins, podemos descargarlo como un archivo .war o como un ejecutable de auto-instalación.
En realidad, hay dos formas de instalar Jenkins como un servicio Windows. La página web que documenta esta instalación es la siguiente: https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+as+a+Windows+service. Esto no es realmente la que yo prefiero, pero como es la documentación oficial, vamos a seguir con este procedimiento.
Para ello, debemos descargar el archivo jenkins.war correspondiente de la última versión (1529 en nuestro ejemplo). Y voy a guardarlo en un directorio ‘C:\Soft\Jenkins\Versions\1.529’.
Una vez finalizada la descarga, se abre una ventana de DOS y entramos el comando
java -jar jenkins.war:
Dejamos ejecutarse. Podemos notar la instalación por defecto en un directorio ‘.jenkins’ en los archivos personales del usuario conectado. Esto no es realmente lo que quiero porque estas carpetas tienen derechos de acceso limitados y puede ser un problema para compartir Jenkins en un servidor, entre varios usuarios con diferentes logins.
Una vez terminado el despliegue del ficher .war …
… vamos con nuestro navegador en la url http://localhost:8080/ (entiendes porque prefiero utilizar el puerto 8888 con Tomcat!). En la pagina Jenkins que aparece, hacemos click en el menú ‘Manage Jenkins’.
En la pagina siguiente, buscamos el menú ‘Install as a Windows Service’.
Esta vez, podemos escoger el directorio de instalación:
Y voy a escoger por eso la carpeta ‘C:\Soft\Jenkins’ con un sub-directorio especifico a esta versión.
Por último, un mensaje nos advierte de que la instalación se ha completado correctamente, y nos pregunta si queremos ejecutar el nuevo servicio de Windows Jenkins. Vamos por eso.
Jenkins aparece en la ventana de los servicios Windows.
En la ventana de los ‘properties’ del servicio, podemos ver el ejecutable en el directorio que hemos indicado para la instalación. Pero activar el botón ‘Start’ no da resultado: Jenkins no quiere arrancar.
De hecho, se trata del mismo problema de login de usuario que hemos encontrado ya durante la instalación de SonarQube,
Pues vamos en la pestaña ‘Log On’ de la ventana de Properties para definir un usuario – yo mismo – que funciona, con los derechos adecuados para arrancar el servicio.
En esta pestaña, seleccionar ‘This account:’ y activar el botón ‘Browse…’.
Luego el botón ‘Advanced’,
Y ‘Find Now’ para conseguir la lista de los usuarios presentes en esta maquina.
Seleccionar un usuario con los derechos para arrancar el servicio Jenkins y validar.
Por último, no olvides introducir la contraseña.
Podemos arrancar de nuevo el servicio Jenkins sin encontrar más error. En la url ‘http://localhost:8080/’, un mensaje nos pide un poco de paciencia.
Y luego:
El repositorio Jenkins
Jenkins guarda su configuración y la de los diferentes plugins, todos los proyectos y archivos en un directorio especificado por la variable de entorno JENKINS_HOME. Esta la hemos definido en Tomcat. Pero ya que no utilizamos Tomcat, nos encontramos con une nuevo repositorio y no el existente. ¿Cómo conseguir trabajar con nuestro repositorio actual?
Jenkins recomienda copar el directorio existente sobre el nuevo. Pues sobre la carpeta que hemos escogido durante la instalación : ‘C:\Soft\Jenkins\Versions\1.529\.jenkins’.
Pero no es lo que quiero: yo no quiero tener que copiar este directorio cada vez que voy a hacer una actualización de Jenkins a una nueva versión.
Lo que quiero es que cada nueva instalación de Jenkins sea capaz de trabajar con mi repositorio existente.
Esto es posible. Simplemente hay que modificar el fichero ‘jenkins.xml‘ que se encuentra en el directorio de instalación, para indicar en la primera sección <service> la ubicación de nuestro actual repositorio:
Tenemos quue reiniciar el servicio Jenkins. Aparece de nuevo el mensaje de espera y a continuación, después de unos segundos, entramos en nuestro Jenkins tal como lo habíamos dejado, con su configuración y los análisis de SonarQube.
Vamos a listar los dos o tres puntos importantes:
- El directorio en el que deseas mantener diferentes versiones de Jenkins que se instalarán a lo largo del tiempo. Se necesita porque es posible que deseas volver a una versión anterior. Por ejemplo: ‘C:\Soft\Jenkins\Versions’.
- El directorio en el que se instalará la versión actual para trabajar, con el archivo ‘jenkins.xml’ que apunta a …
- El directorio ‘Home’ de Jenkins en la que se almacenan las diferentes configuraciones y los análisis de SonarQube.
Mejor pensarlo un poco antes de empezar una nueva instalación o una migración. Especialmente cuando se usa un servidor compartido entre diferentes usuarios. No te olvides de mirar los posts anteriores de migración de SonarQube a un servicio Windows para obtener una visión general de las distintas acciones del plan de migración.
Por último, podemos desinstalar Tomcat. Buen trabajo.
Esta entrada está disponible también en Lire cet article en français y Read that post in english.