Qu’est-ce que Jenkins ? Pourquoi utiliser l'outil d'intégration continue (CI) ?
Qu'est-ce que Jenkins?
Jenkins est un serveur d'intégration continue open source écrit en Java pour orchestrer une chaîne d’actions pour réaliser le processus d’intégration continue de manière automatisée. Jenkins prend en charge le cycle de vie complet du développement d'un logiciel, 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.
Jenkins est une application largement utilisée dans le monde qui compte environ 300 installations et qui croît de jour en jour. En utilisant Jenkins, les éditeurs de logiciels peuvent accélérer leur processus de développement logiciel, car Jenkins peut automatiser la création et les tests à un rythme rapide.
Il s'agit d'une application basée sur serveur et nécessite un serveur Web comme Apache Tomcat. La raison pour laquelle le logiciel Jenkins est devenu si populaire est due à sa surveillance des tâches répétées qui surviennent lors du développement d'un projet. Par exemple, si votre équipe développe un projet, Jenkins testera en permanence les versions de votre projet et vous montrera les erreurs dès les premières étapes de votre développement.
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 fonctionne Jenkins ?
Jenkins est une application basée sur serveur et nécessite un serveur Web tel qu'Apache Tomcat pour fonctionner sur diverses plates-formes telles que Windows, Linux, macOS, Unix, etc. Pour utiliser Jenkins, vous devez créer des pipelines qui sont une série d'étapes qu'un serveur Jenkins suivra. Jenkins Continu Integration Pipeline est un instrument puissant qui consiste en un ensemble d'outils conçus pour hôte, moniteur, compiler ou tester code ou modifications de code, comme :
- Serveur d'intégration continue (Jenkins, Bamboo, CruiseControl, TeamCity, et d'autres)
- Outil de contrôle de source (par exemple, CVS, SVN, GIT, Mercurial, Perforce, ClearCase et autres)
- Outil de construction (Faire, ANT, Maven, Ivy, Gradle, et d'autres)
- Cadre de test d'automatisation (Selenium, Appium, TestComplete, UFT et autres)
Histoire de Jenkin
- 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 qui possédait Sun Microsystems avait un différend avec la communauté open source d'Hudson, ils ont donc forké 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 de nombreux projets et contributeurs tandis que Hudson restait avec seulement 32 projets. Avec le temps, Jenkins est devenu plus populaire et Hudson n'est plus entretenu.
Pourquoi utiliser l'intégration continue avec Jenkins ?
Certaines personnes pourraient penser que la méthode traditionnelle de développement de logiciels est la meilleure. Comprenons les avantages de CI avec Jenkins avec l'exemple suivant
Imaginons qu'il y ait une dizaine de développeurs qui travaillent sur un référentiel partagé. Certains développeurs 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é.
La validation du code a été créée et le cycle de test était très peu fréquent, et une seule version a été effectuée après plusieurs jours. |
Le code est construit 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 construction réussit, Jenkins déploiera la source sur le serveur de test et en informera 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 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. | Étant donné que le code est construit après chaque validation d'un seul développeur, il est facile de détecter quel code a provoqué l'échec de la construction. |
Construction de code 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.
Later, ils ont adopté une approche d’intégration continue. Le logiciel a été construit et testé dès qu'un développeur a validé le 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 à des outils de contrôle de version comme Git, vous devez alors installer des plugins liés à Git. En fait, pour l'intégration avec des outils comme Maven, Amazon EC2, vous devez installer les plugins respectifs dans votre Jenkins.
Avantages de l'utilisation de Jenkins
- Jenkins est géré par la communauté qui est très ouverte. Chaque mois, ils organisent des réunions publiques et recueillent les commentaires du public pour le développement du projet Jenkins.
- Jusqu'à présent, environ 280 tickets ont été clôturés et le projet publie une version stable tous les trois mois.
- À mesure que la technologie évolue, Jenkins évolue également. Jusqu'à présent, Jenkins compte 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.
- L'outil 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 obsolète et peu conviviale par rapport aux tendances actuelles en matière d’interface utilisateur.
- Bien que Jenkins soit apprécié par de nombreux développeurs, il n'est pas si simple à maintenir car Jenkins fonctionne sur un serveur et nécessite certaines 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 la difficulté d'installer et de configurer 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.
Conclusion
- En intégration continue, après une validation de code, le logiciel est construit et testé immédiatement
- Jenkins utilisé pour orchestrer une chaîne d'actions pour l'intégration continue dans un projet logiciel
- Avant Jenkins, lorsque 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é.
- Après Jenkins, le code est construit 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
- Par défaut, Jenkins est livré avec un ensemble limité de fonctionnalités. Si vous souhaitez intégrer votre installation Jenkins à des outils de contrôle de version comme Git, vous devez alors installer des plugins liés à Git. Vérifiez également Meilleur Jenkins Outils alternatifs
- Le plus grand avantage de Jenkins est qu'il est géré par la communauté qui organise des réunions publiques et prend en compte les contributions du public pour le développement des projets Jenkins.
- Le plus gros inconvénient de Jenkins est que son interface est obsolète et peu conviviale par rapport aux tendances actuelles en matière d'interface utilisateur. Si vous envisagez d'autres options susceptibles d'offrir une expérience utilisateur plus moderne, vous souhaiterez peut-être explorer certaines des meilleurs outils d'intégration continue disponible.