web-dev-qa-db-fra.com

Comment déplacer Jenkins d'un PC à un autre

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?

142
huahsin68

Après le Jenkins wiki , vous devrez:

  • Installer une nouvelle instance de Jenkins sur le nouveau serveur
  • Assurez-vous que les anciennes et les nouvelles instances de Jenkins sont arrêtées.
  • Archiver tout le contenu de JENKINS_HOME de l'ancienne instance de Jenkins
  • Extrayez l'archive dans le nouveau répertoire JENKINS_HOME
  • Lancer la nouvelle instance de Jenkins
  • N'oubliez pas de modifier la documentation/les liens vers votre nouvelle instance de Jenkins :)
  • N'oubliez pas de changer le propriétaire des nouveaux fichiers Jenkins: 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.

163
Cédric Julien

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 :

  1. Installer ThinBackup sur les serveurs Jenkins source et cible
  2. Configurez le répertoire de sauvegarde sur les deux (dans Manage Jenkins -> ThinBackup -> Settings)

  3. Sur Sourse Jenkins, accédez à ThinBackup -> Sauvegarder maintenant

  4. Copier du répertoire Jenkins Source Backup vers le répertoire Jenkins Target Backup
  5. Sur la cible Jenkins, accédez à ThinBackup -> Restaurer, puis redémarrez le service Jenkins.
  6. Si certains plug-ins ou tâches sont manquants, copiez le contenu de la sauvegarde directement dans la cible JENKINS_HOME.

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

44
Noam Manos

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 .

  1. Arrêtez les deux serveurs Jenkins
  2. 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/

  3. Démarrer votre nouveau serveur Jenkins

Vous n’avez peut-être pas besoin de ça, mais j’ai dû

  • Manage Jenkins et Reload Configuration from Disk.
  • Déconnectez et connectez à nouveau tous les esclaves.
  • Vérifiez cela dans le Configure System > Jenkins Location, le Jenkins URL est correctement affecté au nouveau serveur Jenkins.
11
Katu

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:

  1. Demande GET: {SOURCE_JENKINS_SERVER}/pluginManager/api/json?depth=1 vous obtiendrez la liste des plugins installés avec leur version.
  2. 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:

  1. Vous pouvez obtenir la liste des tâches installées sur {SOURCE_JENKINS_URL} à l’aide d’un appel REST, {SOURCE_JENKINS_URL}/view/All/api/json
  2. Ensuite, vous pouvez obtenir chaque fichier config.xml de travail à partir des travaux de {SOURCE_JENKINS_URL} à l’aide de l’URL du travail {SOURCE_JENKINS_URL}/job/{JOB_NAME}.
  3. Utilisez ce fichier config.xml pour POST) le contenu du fichier XML sur {DESTINATION_JENKINS_URL} et créer un travail sur {DESTINATION_JENKINS_URL}.

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

1
psalvi21

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.

1
Ijaz Ahmad Khan