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