Migrar Jenkins de Tomcat a un servicio Windows

MigrerJenkins

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):

Jenkins_Tomcat

Además, elegí un directorio de trabajo específico, y vamos a ver que esto tendrá un impacto en el futuro.

JenkinsDir

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.

Stop_Tomcat

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.

Jenkins_download

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:

Jenkins_Java_Install

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.

Jenkins_Java_Install2

Una vez terminado el despliegue del ficher .war …

Jenkins_Java_Install3

… 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’.

Jenkins_ManageJenkins

En la pagina siguiente, buscamos el menú ‘Install as a Windows Service’.

Jenkins_InstallService

Esta vez, podemos escoger el directorio de instalación:

Jenkins_InstallService2

Y voy a escoger por eso la carpeta ‘C:\Soft\Jenkins’ con un sub-directorio especifico a esta versión.

Jenkins_InstallService3

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_InstallService5
Jenkins aparece en la ventana de los servicios Windows.

Jenkins_InstallService6

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.

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

Jenkins_ServiceProperties2

En esta pestaña, seleccionar ‘This account:’ y activar el botón ‘Browse…’.

Jenkins_ServiceProperties3

Luego el botón ‘Advanced’,

Jenkins_ServiceProperties4

Y ‘Find Now’ para conseguir la lista de los usuarios presentes en esta maquina.

Jenkins_ServiceProperties6

Seleccionar un usuario con los derechos para arrancar el servicio Jenkins y validar.

Jenkins_ServiceProperties5

Por último, no olvides introducir la contraseña.
Jenkins_ServiceProperties7

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.

Jenkins_Restart

Y luego:

JenkinsNew

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:

Jenkins_xml

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á también disponible en Lire cet article en français y Read that post in english.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *