Jenkins utilise une architecture maître/esclave pour gérer les builds distribués. Votre serveur Jenkins principal (celui que nous avons utilisé jusqu'à présent) est le maître. En un mot, le rôle du maître est de gérer l'ordonnancement des tâches de build, de répartir les builds sur les esclaves pour leur exécution réelle, surveiller les esclaves (en les mettant éventuellement hors-ligne si nécessaire) et enfin enregistrer et présenter les résultats de build. Même dans une architecture distribuée, une instance maître de Jenkins peut aussi exécuter des tâches de build directement.
Le rôle des esclaves est de faire ce qu'on leur dit, ce qui inclut l'exécution de tâches de build envoyées par le maître. Vous pouvez configurer un projet pour qu'il s'exécute toujours sur un esclave particulier, sur un type particulier de machine, ou simplement laisser Jenkins sélectionner le prochain esclave disponible.
Un esclave est un petit exécutable Java qui fonctionne sur une machine distante et se met en écoute de requêtes de la part de l'instance maître Jenkins. Les esclaves peuvent (et c'est généralement le cas) s'exécuter sur différents systèmes d'exploitation. L'instance esclave peut être démarrée de façons diverses, en fonction du système d'exploitation et de l'architecture réseau. Une fois que l'instance esclave est en marche, elle communique avec l'instance maître au travers d'une connexion TCP/IP. Nous regarderons différentes configurations dans le reste de ce chapitre.