13.4. Sauvegarde de votre configuration

Sauvegarder vos données est une pratique universellement recommandée, et vos serveurs Jenkins ne devraient pas y faire exception. Par chance, sauvergarder Jenkins est relativement aisé. Dans cette section nous allons regarder plusieurs façons de réaliser cela.

13.4.1. Fondamentaux de la sauvegarde Jenkins

Dans la plus simple des configurations, il suffit de sauvegarder périodiquement votre dossier JENKINS_HOME . Il contient la configuration de toutes vos tâches de build, les configurations de vos noeuds esclaves et l'historique des builds. La sauvegarde peut se faire pendant que Jenkins tourne. Il n'y a pas besoin de couper votre serveur pendant la sauvegarde.

L'inconvénient de cette approche est que le dossier JENKINS_HOME peut contenir un volume très important de données (voir Section 3.13, “What’s in the Jenkins Home Directory” ). Si cela devient un problème, vous pouvez en gagner un peu en ne sauvegardant pas les dossiers suivants, qui contiennent des données aisément recrées à la demande par Jenkins :

$JENKINS_HOME/war

Le fichier WAR eclaté

$JENKINS_HOME/cache

Outils téléchargés

$JENKINS_HOME/tools

Outils décompressés

Vous pouvez aussi être sélectif concernant ce que vous sauvegarder dans vos tâches de build. Le dossier $JENKINS_HOME/jobs contient la configuration de la tâche, l'historique des builds et les fichiers archivés pour chacun de vos builds. La structure d'un dossier de tâche de build est présentée dans Figure 13.9, “Le dossier des builds” .

Le dossier des builds

Figure 13.9. Le dossier des builds


Pour savoir comment optimiser vos sauvegardes Jenkins, vous devez comprendre comment sont organisés les dossiers de tâche de build. Au sein du dossier jobs , il y a un dossier pour chaque tâche de build. Ce dossier contient deux dossiers : builds et workspace . Il n'y a pas besoin de sauvegarder le dossier workspace , vu qu'il sera simplement restauré via une simple récupération si Jenkins constate son absence.

Au contraire, le dossier builds requiert plus d'attention. Il contient l'historique de vos résultats de build et de vos artefacts générés précédement, avec un dossier horodaté pour chaque build précédent. Si vous n'êtes pas intéressés par la restauration de votre historique des builds ou d'anciens artefacts, vous n'avez pas besoin de sauver ce dossier. Si vous l'êtes, continuez à lire! Dans chacun de ces dossiers, vous trouverez l'historique des builds (stockés sous la forme de fichiers XML, par exemple les résultats des tests JUnit) et les artefacts archivés. Jenkins utilise les fichiers texte et XML pour réaliser les graphiques affichés sur le tableau de bord des tâche de build. Le dossier archive contient les fichiers binaires ayant été générés et stockés par les builds précédents. Les binaires peuvent vous être importants ou non, mais ils peuvent prendre beaucoup de place. Aussi, si vous les excluez de vos sauvegardes, vous pourriez économiser beaucoup d'espace.

De même qu'il est sage de réaliser des sauvegardes fréquentes, il est également sage de tester votre procédure de sauvegarde. Avec Jenkins, cela est facile à faire. Les répertoires racine de Jenkins sont totalement portables, pour tester votre sauvegarde, il suffit donc de l'extraire dans un dossier temporaire et de lancer une instance Jenkins. Par exemple, imaginons que vous ayez extrait votre sauvegarde dans un dossier temporaire nommé /tmp/jenkins-backup . Pour tester cette sauvegarde, assigner le chemin du dossier temporaire à la variable JENKINS_HOME :

				$
				export
					JENKINS_HOME=/tmp/jenkins-backup
			

Puis démarrer Jenkins sur un port différent et regardez s'il fonctionne :

				$
				java -jar jenkins.war --httpPort=8888
			

Vous pouvez maintenant voir Jenkins tourner sur ce port et vérifier que votre sauvegarde fonctionne correctement.

13.4.2. Utilisation du Backup Plugin

L'approche décrite dans la section précédente est suffisamment simple pour s'intégrer dans vos procédures normales de sauvegardes, mais vous pourriez préférer quelque chose de plus spécifique à Jenkins. Le plugin Backup (voir Figure 13.10, “Le plugin Jenkins Backup Manager” ) fournit une interface utilisateur simple que vous pouvez utiliser pour sauvegarder et restaurer vos configurations et données Jenkins.

Le plugin Jenkins Backup Manager

Figure 13.10. Le plugin Jenkins Backup Manager


Ce plugin vous permet de configurer et de lancer des sauvegardes tant des configurations de vos tâches de build que de votre historique des builds. L'écran "Configuration" vous donne un important contrôle sur les éléments à sauvegarder (voir Figure 13.11, “Configurer Jenkins Backup Manager” ). Vous pouvez choisir de seulement sauvegarder les fichiers XML de configuration, ou de sauvegarder avec l'historique des builds. Vous pouvez aussi choisir de sauvegarder (ou non) les artefacts Maven automatiquement générés (dans de nombreux processus de build, ces artefacts sont disponibles dans votre Entreprise Repository Manager local). Vous pouvez aussi sauvegarder les espaces de travail des tâches (généralement non nécessaire, comme discuté plus haut) et toutes empreintes numériques générées.

Configurer Jenkins Backup Manager

Figure 13.11. Configurer Jenkins Backup Manager


Vous pouvez déclencher une sauvegarde manuellement, depuis l'écran "Gestionnaire de backup" (accessible depuis l'écran "Administrer Jenkins"). La sauvegarde prend du temps et stoppe Jenkins durant cette période (à moins de désactiver cette option dans la configuration de la sauvegarde).

A l'heure où ces lignes sont écrites, il n'est pas possible de planifier cette opération depuis Jenkins, mais vous pouvez démarrer la sauvegarde en invoquant l'adresse correspondante (par exemple http://localhost:8080/backup/backup si votre instance Jenkins tourne localment sur le port 8080). Dans un environnement unix, par exemple, cela serait généralement fait via une tâche cron en utilisant un outil tel que wget ou curl pour démarrer la sauvegarde.

13.4.3. Des sauvegardes automatisées plus légères

Si tout ce que vous voulez sauvegarder est votre configuration des tâches de build, le plugin Backup Manager peut être considéré excessif. Une autre option est d'utiliser le plugin "Thin Backup", qui permet de planifier des sauvegardes complètes et incrémentales de vos fichiers de configuration. Vu qu'ils ne sauvegardent pas votre historique des builds ou vos artefacts, ces sauvegardes sont très rapides et peuvent ainsi être réalisées sans stopper le serveur pour les réaliser.

Tout comme le plugin Backup, ce plugin ajoute une icône dans la page "Administrer Jenkins". De là, vous pouvez configurer et planifier les sauvegardes de votre configuration, déclencher une sauvegarde immédiate ou restaurer une sauvegarde précédente. La configuration est sans détours (voir Figure 13.12, “Configurer le plugin Thin Backup” ). Elle implique simplement de configurer des sauvegardes complètes et incrémentales en utilisant une syntaxe similaire à celle de cron et de fournir un dossier où stocker les sauvegardes.

Configurer le plugin Thin Backup

Figure 13.12. Configurer le plugin Thin Backup


Pour restaurer une configuration précédente, aller simplement à la page "Restore" et choisissez la date de la configuration que vous voulez réappliquer (voir Figure 13.13, “Restaurer une configiuratiopn précédente” ). Une fois la configuration précédente restaurée, vous devez recharger la configuration Jenkins depuis le disque ou redémarrer Jenkins.

Restaurer une configiuratiopn précédente

Figure 13.13. Restaurer une configiuratiopn précédente