J'utilise actuellement Jenkins sur mon PC de développement. Je l'ai installé sur mon PC de développement car mes connaissances sur cet outil étaient limitées; donc j'ai testé sur mon PC de développement. Maintenant, je me sens à l'aise avec Jenkins en tant que "partenaire" à long terme dans le processus de construction et j'aimerais "déplacer" ce Jenkins vers un serveur dédié.
Auparavant, j'ai effectué quelques versions et archivé les artefacts de chaque version. En particulier, le numéro de version est très important pour moi pour le contrôle de version.
Comment puis-je exporter toutes les informations Jenkins de mon PC actuel vers mon nouveau serveur?
Après le Jenkins wiki , vous devrez:
chown -R jenkins:jenkins $JENKINS_HOME
JENKINS_HOME est situé par défaut dans ~/.jenkins
sur une installation Linux, mais pour trouver exactement où il se trouve, allez sur la page http: // your_jenkins_url/configure et vérifiez la valeur du premier paramètre: Home directory
; c'est le JENKINS_HOME.
Si votre répertoire JENKINS_HOME est trop volumineux pour être copié , il vous suffit de configurer les mêmes configurations de Jobs, Plugins Jenkins et Jenkins ( anciens artefacts de travaux et rapports), vous pouvez alors utiliser plugin ThinBackup :
Configurez le répertoire de sauvegarde sur les deux (dans Manage Jenkins -> ThinBackup -> Settings)
Sur Sourse Jenkins, accédez à ThinBackup -> Sauvegarder maintenant
Si certains plug-ins ou tâches sont manquants, copiez le contenu de la sauvegarde directement dans la cible JENKINS_HOME.
Si vous aviez l'authentification de l'utilisateur sur le code source Jenkins et que vous étiez désormais verrouillée sur le code cible Jenkins, modifiez alors le fichier Jenkins config.xml, définissez <useSecurity>
à false et redémarrez Jenkins.
Cela a fonctionné pour moi de passer d'Ubuntu 12.04 (Jenkins version 1.628) à Ubuntu 16.04 (Jenkins version 1.651.2). J'ai d'abord Jenkins installé à partir des référentiels .
Copie JENKINS_HOME
(par exemple,/var/lib/jenkins) de l’ancien serveur vers le nouveau. Depuis une console du nouveau serveur:
rsync -av username@old-server-IP:/var/lib/jenkins/ /var/lib/jenkins/
Vous n’avez peut-être pas besoin de ça, mais j’ai dû
Manage Jenkins
et Reload Configuration from Disk
.Configure System > Jenkins Location
, le Jenkins URL
est correctement affecté au nouveau serveur Jenkins.Parfois, nous n’avons peut-être pas accès à une machine Jenkins pour copier un dossier directement dans une autre instance de Jenkins. J'ai donc écrit un utilitaire piloté par menus qui utilise Jenkins REST API appelle pour installer des plug-ins et des travaux d'une instance Jenkins à une autre.
Pour la migration de plugin:
{SOURCE_JENKINS_SERVER}/pluginManager/api/json?depth=1
vous obtiendrez la liste des plugins installés avec leur version.Vous pouvez envoyer une demande POST avec les paramètres suivants pour installer ces plugins.
final_url=`{DESTINATION_JENKINS_SERVER}/pluginManager/installNecessaryPlugins`
data=`<jenkins><install plugin="{PLUGIN_NAME}@latest"/></jenkins>` (where, latest will fetch the latest version of the plugin_name)
auth=`(destination_jenkins_username, destination_jenkins_password)`
header=`{crumb_field:crumb_value,"Content-Type":"application/xml”}` (where crumb_field=Jenkins-Crumb and get crumb value using API call {DESTINATION_JENKINS_SERVER}/crumbIssuer/api/json
Pour la migration de travail:
{SOURCE_JENKINS_URL}/view/All/api/json
{SOURCE_JENKINS_URL}/job/{JOB_NAME}
.J'ai créé un utilitaire piloté par menu dans Python qui demande à l'utilisateur de démarrer la migration du plug-in ou de Jenkins et utilise Jenkins REST) appels d'API pour le faire.
Vous pouvez consulter le JenkinsMigration.docx à partir de cette URL jenkinsjenkinsmigrationjenkinsrestapi
Jenkins Server Automation:
Étape 1:
Configurez un référentiel pour stocker le domicile Jenkins (travaux, configurations, plugins, etc.) dans un référentiel local GitLab ou sur un référentiel privé GitHub et maintenez-le régulièrement à jour en transmettant les nouvelles modifications apportées aux travaux, plugins, etc. Jenkins.
Étape 2:
Configurez un groupe marionnettes groupe/rôle pour Jenkins pouvant être utilisé pour activer de nouveaux serveurs Jenkins. Effectuez toute la configuration de base d'une recette de marionnettes et assurez-vous qu'elle installe la dernière version de Jenkins et configure un répertoire/mount séparé pour JENKINS_HOME
.
Étape 3:
Faites tourner une nouvelle machine en utilisant la configuration Jenkins-puppet ci-dessus. Lorsque tout est installé, récupérez/clonez la configuration Jenkins du référentiel Git vers le répertoire de base de Jenkins et redémarrez Jenkins.
Étape 4:
Allez à l'URL Jenkins, Gérer Jenkins → Gérer les plugins et mettez à jour tous les plugins nécessitant une mise à jour.
Terminé
Vous pouvez utiliser Docker Swarm ou Kubernetes pour mettre à l'échelle automatiquement les nœuds esclaves.