Construction sur une machine distante
Lorsque le nombre de projets augmente ou que les configurations se multiplient, l'utilisation d'un unique serveur pour la compilation ne suffit plus. Jenkins permet de répartir les constructions sur différentes machines, nommées nœuds. Chaque nœud peut être une machine physique, une machine virtuelle lancée à la volée, voire un conteneur. Cette partie présente l'utilisation d'un nœud avec communication par SSH ; pour éviter le déploiement d'une seconde machine virtuelle, le nœud « distant » tournera sur la même machine virtuelle que le serveur Jenkins, mais les constructions seront exécutées dans des répertoires différents.
Créez un nouveau nœud (Adminstrer Jenkins → Gérer les nœuds → Créer un nœud), appelez-le localhost-ssh
. Saisissez ensuite les paramètres suivants :
-
Nb d'exécuteurs :
2
-
Répertoire de travail distant :
/var/lib/jenkins/ssh
-
Étiquettes :
ssh
-
Méthode de lancement :
Launch slave agents via SSH
-
Host :
localhost
-
Credentials
-
Ajouter ; nom d'utilisateur
jenkins
, mot de passejenkins
; - Sélectionnez les informations nouvellement créées
-
Host Key Verification Strategy :
Non verifying Verification Strategy
(dans un déploiement réel, préférez une vérification des clés SSH)
-
Ajouter ; nom d'utilisateur
Vérifiez également que le nœud (maître) a deux exécuteurs.
Sur la page des nœuds, vous devriez avoir deux entrées, sans erreurs, avec les mêmes informations.
En cas d'erreur sur un nœud, vous avez accès aux informations générées par le client Jenkins dans l'entrée Journal du menu de gauche.
Modifiez votre tâche matricielle en ajoutant un nouvel axe de type user-defined avec deux valeurs (par exemple BUILD_TYPE
avec les valeurs RELEASE
et DEBUG
) et en modifiant le script de « compilation » afficher la valeur de ce nouvel axe.
Lancez une construction, et vérifiez que certaines configurations sont lancées sur le nœud (maître), d'autres sur le nœud localhost-ssh. Ces informations sont visibles sur la page construction de chaque configurations (en haut à droite) et dans le journal (au début, Building on master ou Building remotely on localhost-ssh (ssh))
La répartition des tâches sur chaque nœud est aléatoire, mais il est possible d'utiliser les étiquettes des nœuds comme axe de la matrice des configurations. Cette fonctionnalité permet par exemple d'avoir un axe comportant différentes versions d'une distribution Linux (e.g. debian/jessie et debian/stretch) et de lancer les constructions sur des nœuds correspondants.
Ajoutez un nouvel axe de type Label expression à votre matrice de configurations avec les paramètres suivants:
-
Name:
SSH
-
Label expressions :
ssh
Dans le cas des axes de type Label expression, la liste des nœuds ayant cette étiquette est donnée juste en dessous de l'expression : vous devriez voir Label ssh is serviced by 1 node. Attention : cet axe n'a dans cet exercice qu'une seule valeur et n'apparaît pas dans la matrice de configuration.
Lancez une construction, et vérifiez que seul le nœud localhost-ssh est utilisé.