web-dev-qa-db-fra.com

Comment mettre en place un nouvel esclave Jenkins

J'ai récemment hérité d'un projet Java piloté par Jenkins dans lequel le développeur principal venait de progresser. Il avait déployé le fichier Jenkins WAR sur une instance Tomcat sur un serveur virtuel, ce qui était considéré comme le "serveur de génération".

Ce serveur de génération avait un esclave configuré pour générer et déployer sur myserver.example.com, un autre serveur virtuel. Au cours de la fin de semaine, le personnel des systèmes a retiré le serveur physique sur lequel le myserver.example.com virtual vivait, générant l'exception suivante pour tout travail Jenkins configuré pour être déployé sur cet esclave:

enter image description here

Lorsque je clique sur le lien " Voir le journal pour plus de détails ", je vois la sortie de la console suivante:

[03/18/13 08:13:31] [SSH] Opening SSH connection to myserver.example.com:22.
Java.io.IOException: There was a problem while connecting to myserver.example.com:22
    at com.trilead.ssh2.Connection.connect(Connection.Java:755)
    at com.trilead.ssh2.Connection.connect(Connection.Java:546)
    at hudson.plugins.sshslaves.SSHLauncher.openConnection(SSHLauncher.Java:650)
    at hudson.plugins.sshslaves.SSHLauncher.launch(SSHLauncher.Java:283)
    at hudson.slaves.SlaveComputer$1.call(SlaveComputer.Java:200)
    at Java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.Java:303)
    at Java.util.concurrent.FutureTask.run(FutureTask.Java:138)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.Java:886)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:908)
    at Java.lang.Thread.run(Thread.Java:662)
Caused by: Java.net.NoRouteToHostException: No route to Host
    at Java.net.PlainSocketImpl.socketConnect(Native Method)
    at Java.net.PlainSocketImpl.doConnect(PlainSocketImpl.Java:351)
    at Java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.Java:213)
    at Java.net.PlainSocketImpl.connect(PlainSocketImpl.Java:200)
    at Java.net.SocksSocketImpl.connect(SocksSocketImpl.Java:366)
    at Java.net.Socket.connect(Socket.Java:529)
    at com.trilead.ssh2.transport.TransportManager.establishConnection(TransportManager.Java:342)
    at com.trilead.ssh2.transport.TransportManager.initialize(TransportManager.Java:450)
    at com.trilead.ssh2.Connection.connect(Connection.Java:699)
... 9 more
[03/18/13 08:13:34] [SSH] Connection closed.

Cela a du sens, puisque l’esclave (le myserver.example.com virtual) est hors ligne. Cependant, n'ayant aucune expérience préalable avec Jenkins, je ne sais pas exactement quelles sont les étapes à suivre pour configurer le maître Jenkins afin de créer/déployer ces tâches sur un nouvel esclave et comment configurer le nouvel esclave. Par exemple, dois-je installer quoi que ce soit sur le nouvel esclave ou faire tout type d’installation/config? Merci d'avance!

22
IAmYourFaja

Ajouter un esclave à Jenkins est assez simple. Fondamentalement, si vous utilisez un esclave Unix, vous devez avoir un accès SSH à la machine. Vous devez également installer le plug-in Jenkins SSH Slaves. Une fois que vous avez cela, allez dans l’option Gérer Jenkins de votre Master et choisissez Gérer les nœuds .

Les étapes sont alors:

  1. Cliquez sur Nouveau nœud
  2. Sélectionnez Dumb Slave et donnez-lui un nom (symbolique, ne doit pas nécessairement être le nom de domaine, cela vient plus tard)
  3. Cliquez sur OK et passez à la page de configuration.
  4. Renseignez le # d'exécuteurs avec le nombre de processus simultanés que vous souhaitez exécuter sur ce nœud (généralement pas plus que le nombre de cœurs de processeur alloués).
  5. Renseignez le Remote FS Root avec le chemin complet de l’emplacement où Jenkins doit stocker ses fichiers de travail
  6. Ajoutez éventuellement Étiquettes si vous utilisez celles de votre système (inutile dans de nombreux cas, mais vos projets peuvent nécessiter que les nœuds aient certaines étiquettes pour figurer dans le pool d'exécuteurs pour des travaux spécifiques)
  7. Sélectionnez Lancez les agents esclaves sur des machines Unix via SSH sous Méthode de lancement (si pas déjà sélectionné)
  8. Placez le nom de domaine complet dans le champ Host qui apparaît sous la ligne Launch Method

Certaines hypothèses concernent les outils installés sur l'esclave. Si vous avez des outils spécialisés, vous devrez peut-être les installer séparément (ou regardez les plugins qui gèrent les outils en mouvement immédiatement avant leur exécution). Cependant, si vos nœuds sont construits à partir d'un modèle contenant probablement tous vos outils de construction (Java, ant, etc. dans votre cas, probablement), il ne vous reste plus qu'à faire pour que les choses se passent bien.

35
gaige

J'ai rencontré le même problème que vous, dans mon cas c'était parce que je n'avais pas installé de serveur SSH sur Ubuntu.

0
ChrisAdkin