Jenkins : pourquoi l’exploitation doit aussi l’utiliser
Les DSI qui ont déployé Jenkins uniquement du côté des équipes de développement pourraient bien n’exploiter qu’une partie de la puissance de l’outil. Les capacités de workflow ont de quoi séduire les équipes opérationnelles.
Lorsqu’on évoque la notion de pipeline de développement continu, peu d'outils font aussi autorité que Jenkins. Mais les fonctionnalités de Jenkins ne s'arrêtent pas aux portes des équipes de développement. Les opérationnels peuvent aussi utiliser Jenkins pour le déploiement ainsi que d’autres tâches également à valeur.
Jenkins est un serveur d'automatisation open source, doué d’importantes capacités d’extensions. Jenkins, tout comme les serveurs d'automatisation concurrents, prennent en charge des tâches communes et répétitives liées aux phases de build, de test, à la livraison (delivery) ou au déploiement de nouveaux logiciels ou de mises à jour de code. Il est ainsi nécessaire qu’un développeur écrive et exécute un script manuellement pour un build ; Jenkins complète ces processus automatiquement.
Comprendre le fonctionnement de Jenkins
Jenkins fonctionne essentiellement sous la forme de jobs. Chaque job comprend généralement un certain nombre d'étapes.
Chaque projet de build est un job. Jenkins en supporte une grande variété. Il peut par exemple combiner n'importe quel système de gestion de configuration et de build. Un job peut aussi enregistrer des processus exécutés à l'extérieur de Jenkins puis afficher ces informations sur un tableau de bord Jenkins. Un job multi-configuration peut être d’une grande utilité dans des projets plus sophistiqués, notamment lorsque des builds spécifiques à chaque plateforme sont nécessaires.
Jenkins crée un workflow d'orchestration, appelé pipeline. Par exemple, un fichier de pipeline déclaratif comprend une étape de build, une étape de test et une étape de déploiement ; chaque étape implique de nombreuses étapes individuelles. Jenkins peut créer et soutenir des pipelines multibranches pour créer des jobs de build complexes en se basant sur des critères externes. Dans un modèle continu ou DevOps, Jenkins est utilisé pour des activités de déploiement, même dans des configurations complexes et sur plusieurs serveurs Jenkins.
Grâce à un système de plug-ins, Jenkins s’intègrent à des outils de build, des systèmes de contrôle de versions, des systèmes de test, des référentiels de bugs et d'autres outils pour développer et déployer des logiciels. Par exemple, avec le plug-in Google Compute Engine (GCE), Jenkins utilise les VM GCE lors de l'exécution des tâches de builds, plutôt que d'avoir à administrer le provisioning et de configurer les VMs. Les plug-ins permettent également d’effectuer des tests unitaires et des tests automatisés. Les résultats des tests sont pris en charge par des plug-ins qui affichent les données au sein même de l'interface Jenkins. On compte bien plus de 1 000 plug-ins. Une telle communauté a permis à Jenkins d'être adopté par de nombreuses équipes de développement.
Dans Jenkins, les tâches sont gérées à partir du tableau de bord : on peut ajouter de nouveaux jobs, gérer le serveur Jenkins et visualiser les jobs dans la file d'attente ou ceux en cours d'exécution. Il affiche également un historique horodaté des builds avec des rapports de réussite ou d’échec.
Jenkins pour les équipes opérationnelles
Toutefois, dans les cycles de production actuels, le pipeline de développement franchit également le seuil des équipes opérationnelles. Le personnel d'exploitation utilise Jenkins pour déployer le code au sein d'un pipeline CI/CD et pour automatiser certaines fonctions de support des applications.
Les équipes d'exploitation se reposent par exemple sur Jenkins pour réaliser des tâches généralement exécutées au moyen de scripts ad hoc ou via d'autres outils d'orchestration et d'automatisation. La plateforme se connecte aux outils d'automatisation et d'orchestration en place pour accélérer l'exécution de tâches courantes, leur apporter de la cohérence et éliminer les erreurs susceptibles de compromettre la sécurité ou la performance.
Dans un environnement opérationnel, Jenkins peut automatiser les tâches courantes de maintenance, telles que le garbage collection, la compression des bases de données, la sauvegarde des fichiers ou encore configurer un PRA (Plan de Reprise d’activités). Ces tâches sont souvent exécutées manuellement par l’IT. Jenkins est capable de les gérer et même de les inclure dans un processus orchestré.
Jenkins a également la capacité à être utilisé conjointement avec d'autres outils de gestion d'infrastructure, comme Microsoft System Center Configuration Manager (SCCM) - pour, par exemple, configurer et déployer de nouveaux serveurs sur l'infrastructure. L’IT connecte le matériel à l'alimentation et au réseau local, puis les outils prennent le relais : SCCM reconnaît le nouveau numéro d'identification du matériel et déclenche Jenkins pour effectuer les installations prédéfinies afin de préparer le système pour la production.
Que Jenkins soit utilisé pour le déploiement, le support d'applications ou simplement comme outil de livraison continue (Continuous Delivery), les équipes opérationnelles ont tout à y gagner : gain de temps et cohérence. L’autre avantage : permettre aux opérationnels et aux développeurs de parler le même langage, de mieux comprendre les priorités des uns et des autres et de mieux collaborer. Le tout, en favorisant une culture DevOps.