Qu'est-ce que le JenkinsPourquoi utiliser un outil d'intégration continue (CI) ?

⚡ Résumé intelligent

Jenkins est le serveur d'automatisation open source qui compile et teste le code à chaque validation d'un développeur, transformant ainsi l'intégration continue d'une tâche nocturne en un processus qui s'exécute en continu tout au long de la journée de travail.

  • (I.e. Objectif : Jenkins orchestre automatiquement les étapes de compilation, de test et de déploiement après chaque commit.
  • ☑️ Origine: Issu d'une branche de Hudson en 2011, il est aujourd'hui le serveur d'intégration continue le plus largement déployé.
  • Canalisations : A JenkinsLe fichier stocké avec le code définit chaque étape de la compilation.
  • 🧪 Plugins: Plus de deux mille plugins se connectent Jenkins à Git, Maven, Docker et Kubernetes.
  • Compromis : L'auto-hébergement offre un contrôle total, mais implique également du travail d'administration serveur.

Jenkins Présentation du serveur d'intégration continue

Qu'est-ce que le Jenkins?

Jenkins est un serveur d'intégration continue open source écrit en Java pour orchestrer une chaîne d'actions afin de réaliser le processus d'intégration continue de manière automatisée. Jenkins prend en charge l'intégralité du cycle de vie du développement logiciel, de la construction, des tests, de la documentation, du déploiement et des autres étapes du cycle de vie du développement logiciel.

Jenkins est une application largement utilisée dans le monde entier, avec des centaines de milliers d'installations et une croissance quotidienne. En utilisant JenkinsLes entreprises de logiciels peuvent ainsi accélérer leur processus de développement logiciel. Jenkins peut automatiser la compilation et les tests à un rythme rapide.

Il s'agit d'une application serveur qui nécessite un serveur web comme Apache Tomcat. La raison Jenkins Le logiciel est devenu si populaire grâce à sa capacité à surveiller les tâches répétitives qui surviennent au cours du développement d'un projet. Par exemple, si votre équipe développe…ping un projet, Jenkins Nous testerons en continu vos versions de projet et vous indiquerons les erreurs dès les premières étapes de votre développement.

À noter: déployer la GUERRE dans Apache Tomcat fonctionne toujours, mais les versions actuelles intègrent un conteneur de servlets. Jenkins Il fonctionne normalement de manière autonome. La gamme LTS 2.555.x nécessite Java 21.

Qu'est-ce que l'Intégration Continue ?

Intégration continue est un processus d'intégration répétée des modifications de code de plusieurs développeurs dans un seul projet. Le logiciel est testé immédiatement après une validation de code. À chaque validation de code, le code est construit et testé. Si le test est réussi, la build est testée pour le déploiement. Si le déploiement réussit, le code est mis en production.

Cette validation, cette construction, ce test et ce déploiement sont un processus continu d'où le nom d'intégration/déploiement continu.

Comment Jenkins marche ?

Jenkins est une application serveur qui nécessite un serveur web comme Apache Tomcat pour fonctionner sur différentes plateformes. Windows, Linux, macOS, Unix, etc. Pour utiliser Jenkins, vous devez créer des pipelines, qui sont une série d'étapes qui un Jenkins Le serveur prendra en charge. Jenkins Le pipeline d'intégration continue est un instrument puissant composé d'un ensemble d'outils conçus pour héberger, surveiller, compiler et tester du code, ou des modifications de code, comme :

  • Serveur d'intégration continue (Jenkins, Bamboo, CruiseControl, TeamCity, et d'autres)
  • Outil de gestion de versions (par exemple, CVS, SVN, GIT, Mercurial, Perforce, ClearCase et autres)
  • Outil de construction (Make, ANT, Maven, Ivy, Gradle, et d'autres)
  • cadre de tests d'automatisation (Selenium, Appium, TestComplete, UFT, et d'autres)

Dans les versions actuelles, ces étapes se trouvent dans un JenkinsLe fichier a été enregistré à côté du code. Jenkins Le contrôleur lit ce fichier et transmet chaque étape à un agent, c'est-à-dire la machine qui exécute réellement le travail.

Jenkins Histoire

  • Kohsuke Kawaguchi, un Java Le développeur travaillant chez SUN Microsystems en avait assez de créer du code et de corriger les erreurs de manière répétitive. En 2004, création d'un serveur d'automatisation appelé Hudson qui automatise les tâches de construction et de test.
  • En 2011, Oracle Les propriétaires de Sun Microsystems étaient en conflit avec la communauté open source Hudson ; ils ont donc créé une branche de Hudson et l'ont renommée en Jenkins.
  • Hudson et Jenkins ont continué à fonctionner de manière indépendante. Mais en peu de temps, Jenkins a acquis de nombreux projets et contributeurs tandis que Hudson n'en gérait que 32. Avec le temps, Jenkins Hudson est devenu plus populaire, et il n'est plus entretenu.

Pourquoi utiliser l'intégration continue avec Jenkins?

Certaines personnes pourraient penser que la méthode traditionnelle de développementping Le logiciel est la meilleure solution. Voyons les avantages de l'intégration continue (CI) avec Jenkins avec l'exemple suivant

Imaginons qu'une dizaine de développeurs travaillent sur un dépôt partagé. Certains terminent leur tâche en 25 jours, tandis que d'autres mettent 30 jours.

Avant Jenkins Après Jenkins

Une fois que tous les développeurs avaient terminé les tâches de codage qui leur étaient assignées, ils validaient leur code en même temps. Later, Build est testé et déployé.

Code Le processus de compilation était effectif, le cycle de test était très peu fréquent et une seule compilation était effectuée après plusieurs jours.

Le code est compilé et testé dès que le développeur valide du code. Jenkins compilera et testera le code plusieurs fois au cours de la journée.

Si la compilation réussit, alors Jenkins Déploiera le code source sur le serveur de test et en informera l'équipe de déploiement.

Si la compilation échoue, alors Jenkins signalera les erreurs à l'équipe de développement.

Étant donné que le code a été construit en une seule fois, certains développeurs devraient attendre que d'autres développeurs aient fini de coder pour vérifier leur version. Le code est construit immédiatement après la validation de l'un des développeurs.
Ce n'est pas une tâche facile d'isoler, de détecter et de corriger les erreurs liées à plusieurs validations. Comme le code est compilé après chaque commit d'un même développeur, il est facile de détecter quel code a provoqué l'échec de la compilation.
Code construire et processus de test sont entièrement manuels, il y a donc de nombreuses chances d'échec. Processus de construction et de test automatisé permettant de gagner du temps et de réduire les défauts.
Le code est déployé une fois que toutes les erreurs sont corrigées et testées. Le code est déployé après chaque build et test réussi.
Le cycle de développement est lent Le cycle de développement est rapide. Les nouvelles fonctionnalités sont plus facilement accessibles aux utilisateurs. Augmente les bénéfices.

Étude de cas concret d'intégration continue

Je suis sûr que vous connaissez tous l'ancien téléphone Nokia. Nokia avait l'habitude de mettre en œuvre une procédure appelée nightly build. Après plusieurs engagements de divers développeurs au cours de la journée, le logiciel a été construit chaque nuit. Étant donné que le logiciel n'est construit qu'une fois par jour, il est extrêmement pénible d'isoler, d'identifier et de corriger les erreurs dans une grande base de code.

LaterIls ont adopté une approche d'intégration continue, illustrée ci-dessous. Le logiciel est compilé et testé dès qu'un développeur soumet du code. En cas d'erreur, le développeur concerné peut la corriger rapidement.

La compilation nocturne de Nokia a été remplacée par un cycle d'intégration continue déclenché par les commits.

Jenkins Plugins

Par défaut, Jenkins Il est livré avec un ensemble limité de fonctionnalités. Si vous souhaitez intégrer votre Jenkins Si vous installez un système de contrôle de version comme Git, vous devez installer les plugins associés. En effet, pour l'intégration avec des outils comme Maven, Amazon EC2, vous devez installer les plugins correspondants dans votre Jenkins, comme le montre le gestionnaire de plugins ci-dessous.

Jenkins Gestionnaire de plugins listant les plugins disponibles prêts à être installés

Avantages de l'utilisation Jenkins

  • Jenkins est géré par la communauté, qui est très ouverte. Chaque mois, des réunions publiques sont organisées afin de recueillir les suggestions des citoyens pour le développement de Jenkins .
  • Le projet maintient un rythme de publication prévisible : une nouvelle version de base à support à long terme est choisie toutes les douze semaines, puis reçoit des correctifs planifiés.
  • À mesure que la technologie évolue, elle évolue elle aussi. JenkinsLa base de données de plugins contient désormais plus de deux mille plugins. Grâce aux plugins, Jenkins devient encore plus puissant et riche en fonctionnalités.
  • Jenkins L'outil prend également en charge une architecture basée sur le cloud afin que vous puissiez déployer Jenkins sur des plateformes basées sur le cloud.
  • La raison pour laquelle Jenkins Sa popularité tient au fait qu'il a été créé par un développeur pour des développeurs.

Inconvénients de l'utilisation Jenkins

Bien que Jenkins est un outil très puissant, mais il a ses défauts.

  • Son interface est obsolète et peu conviviale par rapport aux tendances actuelles en matière d'interface utilisateur, même si les versions récentes ont modernisé une grande partie de la conception de l'écran.
  • Bien que Jenkins Bien qu'il soit apprécié par de nombreux développeurs, sa maintenance n'est pas si simple car Jenkins Il s'exécute sur un serveur et nécessite certaines compétences d'administrateur serveur pour surveiller son activité.
  • L'une des raisons pour lesquelles beaucoup de gens ne mettent pas en œuvre Jenkins est dû à sa difficulté d'installation et de configuration Jenkins.
  • Les intégrations continues s'interrompent régulièrement en raison de quelques petits changements de paramètres. L'intégration continue sera suspendue et nécessitera donc une certaine attention des développeurs.
  • Des conflits de dépendances entre plugins apparaissent lorsque de nombreux plugins sont mis à jour à des moments différents ; les mises à jour de plugins nécessitent donc leur propre fenêtre de maintenance.

Si ces compromis sont importants pour votre équipe, comparez les Meilleur Jenkins Outils alternatifs et la liste plus large de meilleurs outils d'intégration continue avant de s'engager sur un serveur auto-hébergé.

FAQ

Oui. Jenkins Ce logiciel est distribué sous licence MIT et son téléchargement et son exécution sont gratuits. Le coût est indirect : il s’agit du serveur, du stockage et du temps d’administration nécessaires au bon fonctionnement d’un contrôleur auto-hébergé.

La ligne de support à long terme 2.555.x fonctionne sur Java 21, avec Java 25 ont également été soutenus ; Java La version 17 a été supprimée à partir de la version 2.555.1. Vérifiez la configuration requise avant de mettre à niveau, car une ancienne version de JDK empêche le contrôleur de démarrer.

A JenkinsLe fichier est un fichier texte contenant la définition du pipeline, enregistré avec le code de l'application. Il peut être écrit en syntaxe déclarative ou scriptée, et conserverping Dans le système de contrôle de version, la version peut être examinée comme n'importe quelle autre modification.

Le contrôleur est le Jenkins L'installation qui planifie les tâches et gère l'interface web. Un agent est une machine distincte qui exécute les étapes de compilation qui lui sont assignées, ce qui répartit la charge et permet les compilations sur plusieurs systèmes d'exploitation.

Les modèles d'apprentissage automatique regroupent les erreurs répétées, distinguent les véritables régressions des tests instables et identifient le commit le plus susceptible d'être en cause. Ainsi, un long journal de console se transforme en une liste concise et classée par ordre de priorité pour le développeur d'astreinte.

Copilote GitHub Ébauche des étapes déclaratives et des étapes communes à partir d'un commentaire. RevExaminez attentivement chaque suggestion, car elle invente fréquemment des noms d'étapes de plugin qui ne sont pas installés sur votre contrôleur.

Les services hébergés ne nécessitent aucune maintenance serveur et démarrent plus rapidement, tandis que Jenkins offre un contrôle total sur le matériel, les plugins et l'emplacement des données. Les équipes aux environnements de développement atypiques conservent généralement JenkinsLes petits projets privilégient souvent un exécuteur hébergé.

Oui. Les étapes de construction peuvent invoquer Maven, Gradle ou Fourmi, et JUnit, TestNG or Selenium Les résultats sont publiés sur la page de la tâche, de sorte qu'une suite de résultats défaillante signale l'ensemble de la compilation en rouge.

Résumez cet article avec :