Migrer Jenkins de Tomcat vers un service Windows

MigrerJenkins

La série de posts en cours porte sur la migration de SonarQube et Jenkins depuis Tomcat vers des services Windows.

Nous avons déjà vu comment effectuer cette migration pour SonarQube, tout en continuant de travailler avec Jenkins sous Tomcat, c’est-à-dire sans rien perdre de notre repository SonarQube, notre tableau de bord, les résultats d’analyse, les profils, mais également en gardant la possibilité de lancer les projets configurés sous Jenkins, et donc sans rien perdre des plugins installés, dont celui pour le SonarQube Runner.

Aujourd’hui, nous allons voir comment migrer Jenkins en service Windows. Et finalement nous débarrasser de ce bon vieux Tomcat. 

Ma configuration

Tout d’abord un rappel de ma configuration depuis l’article de Qualilogy : Installation de SonarQube avec Jenkins. En effet, je n’ai pas tout à fait la même configuration que vous, puisque j’ai choisi d’installer Tomcat sur le port 8888 (vieille habitude prise pour éviter des conflits avec les logiciels qui s’installent par défaut sur le port 8080) :

Jenkins_Tomcat

De même, j’ai choisi un répertoire de travail spécifique, et nous verrons que cela aura son incidence par la suite.

JenkinsDir

D’ailleurs, je vous recommande d’effectuer un backup de celui-ci en préalable à toute opération.

Et également de stopper Tomcat afin d’éviter de nous mélanger les pinceaux entre nos différentes installations de Jenkins.

Stop_Tomcat

Installer Jenkins en service Windows

Si nous allons sur la page d’accueil de Jenkins, nous pouvons télécharger celui-ci sous la forme d’un fichier .war ou d’un exécutable d’installation.

Jenkins_download

Il existe en fait 2 manières d’installer Jenkins en tant que service Windows. La page du site Jenkins qui documente cette installation de Jenkins est la suivante : https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+as+a+Windows+service. Ce n’est pas forcément celle que je préfère mais comme il s’agit de la documentation officielle, autant suivre cette procédure.

Pour cela, nous téléchargeons le fichier jenkins.war correspondant à la dernière version (1.529 dans notre exemple). Et que je vais sauvegarder dans un répertoire ‘C:\Soft\Jenkins\Versions\1.529’.

Une fois le téléchargement terminé, nous ouvrons une fenêtre DOS et nous lançons la commande
java -jar jenkins.war :

Jenkins_Java_Install

Laisser dérouler. Notez l’installation par défaut dans un répertoire .jenkins créé sous les dossiers personnels du user connecté. Ce n’est pas vraiment ce que je souhaite car ces dossiers ont des droits d’accès limités et même si cela n’a pas d’impact pour une installation personnelle sur mon portable, il n’en sera pas de même pour un Jenkins partagé entre plusieurs utilisateurs avec des logins différents.

Jenkins_Java_Install2

Une fois le déploiement du fichier .war terminé …

Jenkins_Java_Install3

… lancer votre browser préféré avec l’url http://localhost:8080/ (vous comprenez pourquoi j’utilise le port 8888 pour Tomcat !). Dans la page Jenkins qui s’affiche, clicker sur le menu ‘Manage Jenkins’.

Jenkins_ManageJenkins

Et dans la page suivante, rechercher le menu ‘Install as a Windows Service’.

Jenkins_InstallService

Cette fois, nous allons pouvoir choisir un répertoire d’installation :

Jenkins_InstallService2

Et je vais choisir d’installer Jenkins dans le répertoire suivant ‘C:\Soft\Jenkins’ avec un dossier spécifique à cette version.

Jenkins_InstallService3

L’installation n’affiche pas de sablier, donc j’ai cru qu’elle n’était pas lancée, et j’ai cliqué deux fois sur le bouton ‘Install’. Pas de problème : cela ne crée pas d’erreur ni de seconde installation, heureusement.

Finalement, un message nous avertit que l’installation s’est terminée de manière correcte, et nous demande si nous souhaitons lancer le nouveau service Windows de Jenkins.

Jenkins_InstallService5
Jenkins apparaît effectivement dans la fenêtre des services.

Jenkins_InstallService6

Si nous affichons les properties de celui-ci, nous pouvons voir l’exécutable dans le dossier indiqué précédemment lors de l’installation. Par contre, l’activation du bouton ‘Start’ n’aboutit pas au résultat espéré : Jenkins ne veut pas démarrer.

Jenkins_ServiceProperties
En fait, il s’agit du même problème de login utilisateur déjà rencontré lors de l’installation de SonarQube,

Bon, il faut aller dans l’onglet ‘Log On’ de la fenêtre de Properties et se définir comme utilisateur.

Jenkins_ServiceProperties2

Dans cet onglet, sélectionner ‘This account:’ puis activer le bouton ‘Browse…’.

Jenkins_ServiceProperties3

Ensuite, le bouton ‘Advanced’,

Jenkins_ServiceProperties4

puis ‘Find Now’ afin d’afficher la liste des utilisateurs existants pour cette machine.

Jenkins_ServiceProperties6

Sélectionner l’utilisateur avec les droits permettant de démarrer le service Jenkins, et validez votre choix.

Jenkins_ServiceProperties5

Enfin, n’oubliez pas de rentrer son password.Jenkins_ServiceProperties7

Nous pouvons maintenant lancer le service Jenkins sans plus d’erreur, puis à nouveau la page Jenkins à l’url ‘http://localhost:8080/’. Un message nous demande un peu de patience.

Jenkins_Restart

Puis après quelques instants :

JenkinsNew

Le référentiel Jenkins

Jenkins guarde sa configuration et celle des différents plugins utilisés, tous les jobs et les fichiers de build, dans un répertoire désigné par la variable d’environnement JENKINS_HOME. Celle que nous avons paramétrée sous Tomcat. Mais comme nous n’utilisons plus Tomcat mais Jenkins en service Windows, nous nous retrouvons avec un nouveau repository initié à l’installation. Comment faire afin de récupérer notre référentiel existant avec nos analyses SonarQube ?

Jenkins recommande de recopier le répertoire existant vers le nouveau répertoire. En l’occurrence, vers le répertoire que j’ai désigné lors de l’installation : ‘C:\Soft\Jenkins\Versions\1.529\.jenkins’. Mais ce n’est pas ce que je veux : je ne souhaite pas avoir à recopier ce répertoire chaque fois que je veux effectuer un upgrade de Jenkins vers une nouvelle version.

Ce que je souhaite, c’est que ma nouvelle installation Jenkins soit capable de travailler avec mon repository existant.

Ce qui est tout à fait possible. Il suffit de modifier le fichier ‘jenkins.xml‘ présent dans le répertoire d’installation afin de lui indiquer, dans la toute première section <service> l’emplacement de notre référentiel existant :

Jenkins_xml

Il faudra faire un Restart du service Jenkins sous Windows. Le message d’attente apparaît à nouveau au démarrage, puis après quelques secondes, nous obtenons notre Jenkins tel que nous l’avions laissé, avec sa configuration et nos analyses SonarQube.

Donc en définitive, réfléchissez bien à deux ou trois points importants :

  • Le répertoire dans lequel vous souhaitez conserver les différentes versions de Jenkins que vous allez installer au fil du temps. Nécessaire, car vous pouvez souhaiter revenir sur une version antérieure. Par exemple: ‘C:\Soft\Jenkins\Versions’.
  • Le répertoire dans lequel sera installée la version actuelle en cours d’exploitation, et avec le fichier ‘jenkins.xml’ qui pointera vers …
  • Le répertoire de travail de Jenkins dans lequel sont stockés les différentes configurations et jobs d’analyse SonarQube.

Comme toujours, un peu de réflexion avant de se lancer dans une installation ou une migration comme celle-ci. Notamment si vous utilisez un serveur partagé entre différents utilisateurs. N’oubliez pas de regarder les posts précédents afin d’avoir une vue d’ensemble des différentes actions à planifier.

Enfin, nous pouvons maintenant désinstaller Tomcat. Bon travail.

Ce article est également disponible en Leer este articulo en castellano et Read that post in english.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *