Qu'est-ce que Jenkins? Outil d'intégration continue (CI)

Table des matières:

Anonim

Qu'est-ce que Jenkins?

Jenkins est un serveur d'intégration continue open source capable d'orchestrer une chaîne d'actions qui aident à réaliser le processus d'intégration continue (et pas seulement) de manière automatisée.

Jenkins est gratuit et est entièrement écrit en Java. Jenkins est une application largement utilisée dans le monde qui compte environ 300 000 installations et qui grandit de jour en jour.

Il s'agit d'une application basée sur un serveur et nécessite un serveur Web comme Apache Tomcat. La raison pour laquelle Jenkins est devenu si populaire est celle de sa surveillance des tâches répétées qui surviennent pendant le développement d'un projet. Par exemple, si votre équipe développe un projet, Jenkins testera en permanence les builds de votre projet et vous montrera les erreurs au début de votre développement.

En utilisant Jenkins, les éditeurs de logiciels peuvent accélérer leur processus de développement logiciel, car Jenkins peut automatiser la construction et les tests à un rythme rapide. Jenkins prend en charge le cycle de vie de développement complet des logiciels, depuis la création, les tests, la documentation du logiciel, le déploiement et d'autres étapes du cycle de vie du développement logiciel.

Dans ce tutoriel, vous apprendrez

  • Qu'est-ce que Jenkins?
  • Qu'est-ce que l'intégration continue?
  • Histoire de Jenkin
  • Pourquoi utiliser l'intégration continue avec Jenkins?
  • Étude de cas concrète de l'intégration continue
  • Avantages de l'utilisation de Jenkins
  • Inconvénients de l'utilisation de Jenkins

Qu'est-ce que l'intégration continue?

En intégration continue après une validation de code, le logiciel est construit et testé immédiatement. Dans un grand projet avec de nombreux développeurs, les commits sont effectués plusieurs fois par jour. Avec chaque commit, le code est construit et testé. Si le test est réussi, la génération est testée pour le déploiement. Si le déploiement réussit, le code est mis en production. Cette validation, construction, test et déploiement est un processus continu et donc le nom d'intégration / déploiement continu.

Un pipeline d'intégration continue est un instrument puissant qui consiste en 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 autres)
  • Outil de contrôle de la source (par exemple, CVS, SVN, GIT, Mercurial, Perforce, ClearCase et autres)
  • Outil de création (Make, ANT, Maven, Ivy, Gradle et autres)
  • Cadre de test d'automatisation (Selenium, Appium, TestComplete, UFT et autres)

Histoire de Jenkin

  • Kohsuke Kawaguchi, un développeur Java travaillant chez SUN Microsystems, était fatigué de créer le code et de corriger les erreurs de manière répétitive. En 2004, a créé un serveur d'automatisation appelé Hudson qui automatise la tâche de construction et de test.
  • En 2011, Oracle, propriétaire de Sun Microsystems, a eu un différend avec la communauté open source Hudson, alors ils ont bifurqué Hudson et l'ont renommé Jenkins.
  • Hudson et Jenkins ont continué à fonctionner de manière indépendante. Mais en peu de temps, Jenkins a acquis beaucoup de projets et de contributeurs tandis que Hudson est resté avec seulement 32 projets. Avec le temps, Jenkins est devenu plus populaire et Hudson n'est plus maintenu.

Pourquoi utiliser l'intégration continue avec Jenkins?

Certaines personnes pourraient penser que la manière traditionnelle de développer le logiciel est la meilleure. Comprenons les avantages de CI avec Jenkins avec l'exemple suivant

Imaginons qu'il y ait environ 10 développeurs qui travaillent sur un référentiel partagé. Certains développeurs terminent leur tâche en 25 jours, tandis que d'autres prennent 30 jours.

Avant Jenkins Après Jenkins
Une fois que tous les développeurs avaient terminé les tâches de codage qui leur avaient été assignées, ils avaient l'habitude de valider leur code en même temps. Plus tard, Build est testé et déployé. La validation de code a été créée et le cycle de test était très peu fréquent, et une seule construction a été effectuée après plusieurs jours. Le code est généré et testé dès que le développeur valide le code. Jenkin construira et testera le code plusieurs fois au cours de la journée. Si la compilation réussit, Jenkins déploiera la source sur le serveur de test et notifiera l'équipe de déploiement. Si la construction échoue, Jenkins notifiera les erreurs à l'équipe de développeurs.
Étant donné que le code a été construit en une seule fois, certains développeurs devraient attendre que d'autres développeurs terminent le codage pour vérifier leur version. Le code est généré immédiatement après la validation de l'un des développeurs.
Il n'est pas facile d'isoler, de détecter et de corriger les erreurs pour plusieurs validations. Étant donné que le code est construit après chaque validation d'un seul développeur, il est facile de détecter le code qui a provoqué l'échec de la construction.
La construction du code et le processus de test sont entièrement manuels, il y a donc beaucoup de 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éussis.
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 profits.

Étude de cas concrète de l'intégration continue

Je suis sûr que vous connaissez tous l'ancien téléphone Nokia. Nokia implémentait une procédure appelée nightly build. Après plusieurs engagements de divers développeurs pendant la journée, le logiciel se construit tous les soirs. Étant donné que le logiciel n'a été construit qu'une fois par jour, il est très difficile d'isoler, d'identifier et de corriger les erreurs dans une grande base de code.

Plus tard, ils ont adopté une approche d'intégration continue. Le logiciel a été construit et testé dès qu'un développeur a engagé du code. Si une erreur est détectée, le développeur concerné peut rapidement corriger le défaut.

Plugins Jenkins

Par défaut, Jenkins est livré avec un ensemble limité de fonctionnalités. Si vous souhaitez intégrer votre installation Jenkins avec des outils de contrôle de version comme Git, vous devez installer des plugins liés à Git. En fait, pour l'intégration avec des outils tels que Maven, Amazon EC2, vous devez installer les plugins respectifs dans votre Jenkins.

Intégration de plugins dans Jenkins

Avantages de l'utilisation de Jenkins

  • Jenkins est géré par la communauté qui est très ouverte. Chaque mois, ils tiennent des réunions publiques et prennent les contributions du public pour le développement du projet Jenkins.
  • Jusqu'à présent, environ 280 tickets sont fermés et le projet publie une version stable tous les trois mois.
  • À mesure que la technologie se développe, Jenkins évolue également. Jusqu'à présent, Jenkins a environ 320 plugins publiés dans sa base de données de plugins. Avec les plugins, Jenkins devient encore plus puissant et riche en fonctionnalités.
  • Jenkins prend également en charge l'architecture basée sur le cloud afin que vous puissiez déployer Jenkins sur des plates-formes basées sur le cloud.
  • La raison pour laquelle Jenkins est devenu populaire est qu'il a été créé par un développeur pour des développeurs.

Inconvénients de l'utilisation de Jenkins

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

  • Son interface est désuète et peu conviviale par rapport aux tendances actuelles de l'interface utilisateur.
  • Bien que Jenkins soit aimé par de nombreux développeurs, il n'est pas si facile de le maintenir car Jenkins s'exécute sur un serveur et nécessite des compétences en tant qu'administrateur de serveur pour surveiller son activité.
  • L'une des raisons pour lesquelles de nombreuses personnes n'implémentent pas Jenkins est due à sa difficulté à installer et à configurer Jenkins.
  • Les intégrations continues sont régulièrement interrompues en raison de petits changements de paramètres. L'intégration continue sera interrompue et nécessite donc une certaine attention du développeur.

Conclusion:

  • En intégration continue, après une validation de code, le logiciel est construit et testé immédiatement
  • Jenkins est un serveur d'intégration continue open source capable d'orchestrer une chaîne d'actions
  • Avant Jenkins, lorsque tous les développeurs avaient terminé leurs tâches de codage assignées, ils avaient l'habitude de valider leur code en même temps. Plus tard, Build est testé et déployé.
  • Après Jenkins, le code est généré et testé dès que le développeur valide le code. Jenkin construira et testera du code plusieurs fois au cours de la journée
  • Par défaut, Jenkins est livré avec un ensemble limité de fonctionnalités. Si vous souhaitez intégrer votre installation Jenkins avec des outils de contrôle de version comme Git, vous devez installer des plugins liés à Git
  • Le plus grand avantage de Jenkins est qu'il est géré par la communauté qui tient des réunions publiques et prend les contributions du public pour le développement des projets Jenkins.
  • Le plus gros inconvénient de Jenkin est que son interface est obsolète et n'est pas conviviale par rapport aux tendances actuelles de l'interface utilisateur.