Chapter 11. Builds distribués

11.1. Introduction
11.2. L'Architecture de build distribuée de Jenkins
11.3. Stratégies Maître/Esclave dans Jenkins
11.3.1. Le maître démarre l'agent esclave en utilisant SSH
11.3.2. Démarrer l'agent esclave manuellement via Java Web Start
11.3.3. Installer un esclave Jenkins en tant que service Windows
11.3.4. Démarrer le noeud esclave en mode Headless
11.3.5. Démarrer un esclave Windows en tant que service distant
11.4. Associer une tâche de build avec un esclave ou un groupe d'esclaves
11.5. Surveillance des noeuds
11.6. Cloud computing
11.6.1. Utiliser Amazon EC2
11.6.1.1. Mettre en place votre ferme de build Amazon EC2
11.6.1.2. Utiliser des instances EC2 comme partie de votre ferme de build
11.6.1.3. Utiliser des instances dynamiques
11.7. Utiliser le service CloudBees DEV@cloud
11.8. Conclusion

11.1. Introduction

L'une des fonctionnalités les plus puissantes de Jenkins est sans aucun doute sa capacité à répartir les tâches de build sur un grand nombre de machines. Il est assez simple de configurer une ferme de serveurs de build, soit pour répartir la charge sur de multiples machines, soit pour exécuter des tâches de build dans différents environnements. C'est une stratégie très efficace qui peut potentiellement accroître de façon considérable la capacité de votre infrastructure d'IC.

Les builds distribués sont généralement utilisés soit pour absorber une charge additionnelle, par exemple pour absorber les pics d'activité dans les builds en ajoutant dynamiquement des machines supplémentaires selon les besoins, soit pour exécuter des tâches de build spécialisées sur des systèmes d'exploitation ou des environnements spécifiques. Par exemple, vous pourriez avoir besoin d'exécuter une tâche de build spéciale sur une machine ou un système d'exploitation particulier. Si vous avez besoin d'exécuter des tests web en utilisant Internet Explorer, vous devrez utiliser une machine Windows. Ou alors une de vos tâches de build pourrait être particulièrement consommatrice en ressources, et nécessite d'être exécutée sur une machine dédiée afin de ne pas pénaliser d'autres tâches de build.

La demande pour des serveurs de build peut aussi fluctuer dans le temps. Si vous travaillez avec des cycles de release de produit, vous pouvez avoir besoin de beaucoup plus de tâches de build en fin de cycle, par exemple, lorsque des tests fonctionnels ou de régression plus complets deviennent plus fréquents.

Dans ce chapitre, nous verrons comment configurer et gérer une ferme de serveurs de build en utilisant Jenkins.