Examinons en détail ces deux solutions d’intégration continue très répandues et leurs particularités.
La manière dont nous concevons les logiciels a connu une transformation majeure au cours de la dernière décennie.
Autrefois, le modèle en cascade était la norme. Ensuite, la méthodologie Agile a introduit le développement itératif. Aujourd’hui, avec DevOps, le développement et les opérations s’effectuent de manière itérative et continue jusqu’à ce que l’application soit achevée et déployée.
Le concept de CI/CD, signifiant intégration continue et livraison continue, est devenu omniprésent. Cette pratique DevOps permet de développer et de livrer une application avec une vitesse et une fiabilité accrues. Il s’agit d’une approche qui automatise toutes les étapes, de la définition des besoins jusqu’au déploiement en production, à l’aide d’un outil CI/CD. Cette méthode s’avère bien plus efficace et sécurisée que les procédures manuelles.
Face à la multitude d’outils CI/CD disponibles, il peut être difficile de faire le bon choix.
Pourquoi opter pour Jenkins ?
Jenkins est la solution open source d’intégration continue la plus largement adoptée. C’est même la référence incontestée en la matière.
Jenkins peut être installé sur les principaux systèmes d’exploitation comme Windows ou Linux, car il est basé sur Java. Il a été initialement conçu comme un outil d’automatisation pour les applications Java. Son évolution a été considérable, avec plus de 1400 plugins qui facilitent son intégration avec d’autres plateformes et outils.
Jenkins constitue l’élément clé pour l’intégration continue et la livraison continue au sein du processus de développement logiciel. Il est simple à installer et fournit un tableau de bord permettant de gérer les projets, accessible aisément via un navigateur.
Les développeurs utilisent Jenkins pour automatiser la construction, l’intégration, le test et le déploiement de leur code. Après le dépôt de code par un développeur, Jenkins récupère les modifications, déclenche une compilation et lance les tests si nécessaire. Une fois la compilation terminée, les résultats sont affichés sur le tableau de bord Jenkins et une notification peut être envoyée au développeur si cela a été configuré.
Pourquoi choisir TeamCity ?
TeamCity est un serveur CI/CD commercial également basé sur Java. Il s’agit d’un outil d’automatisation et de gestion des builds créé par JetBrains.
TeamCity se présente comme une solution « d’intégration continue puissante prête à l’emploi », une promesse qu’il tient. Il offre pratiquement toutes les fonctionnalités de Jenkins, en y ajoutant quelques atouts supplémentaires. TeamCity peut s’intégrer avec Docker pour la création automatisée de conteneurs via docker-compose. Il supporte l’intégration de l’outil Jira pour un suivi aisé des problèmes.
TeamCity prend en charge le framework .NET et s’intègre aisément avec plusieurs IDE tels que Eclipse et Visual Studio. Grâce à une fonction d’intégration permettant de créer un référentiel d’artefacts, TeamCity peut stocker ces derniers sur le système de fichiers du serveur TeamCity ou dans un emplacement externe.
La version gratuite de TeamCity, avec une licence serveur professionnelle, vous permet de réaliser 100 builds avec 3 agents de build sans frais.
Jenkins versus TeamCity
Open Source vs Commercial
La distinction fondamentale est que Jenkins est un outil open source d’intégration continue, tandis que TeamCity est une solution commerciale. Le projet Jenkins est publié sous licence MIT et soutenu par une communauté de développeurs internationale. TeamCity est développé et maintenu par JetBrains.
Interface
L’interface de TeamCity est soignée et intuitive, ce qui séduit les débutants en intégration continue à la recherche d’un outil CI facile à prendre en main. Elle permet de baliser, commenter et épingler les builds pour une meilleure organisation.
L’interface de Jenkins a un aspect plus traditionnel. Elle n’est pas particulièrement attrayante et pourrait être améliorée du point de vue de l’expérience utilisateur.
Fonctionnalités exclusives
Bien que Jenkins ne dispose pas de nombreuses fonctionnalités intégrées, son vaste écosystème de plugins offre une multitude d’options que les autres outils CI ne peuvent pas égaler. Grâce à ces plugins, Jenkins est utilisé pour créer des versions et analyser le code, contribuant ainsi à améliorer la qualité de celui-ci.
D’un autre côté, en plus des fonctionnalités habituelles d’un outil CI, TeamCity propose plusieurs fonctions prêtes à l’emploi. Il prend en charge diverses plateformes telles que Java, Ruby, .NET, etc. Il permet également de créer des images Docker. Grâce à son intégration avec Bugzilla et Jira, le suivi des problèmes devient plus aisé. De plus, les changements de build et l’historique des échecs sont conservés, offrant un suivi des statistiques, l’exécution d’anciens builds et les rapports de tests.
Installation
Pour installer Jenkins sur votre système, il est nécessaire que Java soit préalablement installé. La configuration de Jenkins est simple si les deux sont présents. Une fois l’installation complétée, vous pouvez commencer à utiliser Jenkins via son interface Web.
L’installation de TeamCity est également très simple. Il suffit de télécharger le serveur TeamCity, de consulter la documentation et de suivre les instructions.
Intégrations
Il est difficile de trouver un outil CI rivalisant avec Jenkins en matière d’intégrations. La popularité de Jenkins sur le marché est due en grande partie à son offre d’intégration avec des centaines de plugins gratuits.
Comparé à Jenkins, TeamCity propose un nombre d’intégrations via plugins plus limité. Toutefois, il offre des intégrations spécifiques, renforçant ainsi ses « fonctionnalités prêtes à l’emploi ». Il prend en charge le framework .NET et s’intègre avec Visual Studio Team Services, en proposant une intégration cloud avec des fournisseurs tels qu’AWS, Azure, GCP et VMware.
Sécurité
L’avantage de TeamCity étant une solution commerciale, c’est que JetBrains assure un support de première ligne, assurant des corrections rapides en cas de faille de sécurité. TeamCity propose une intégration avec le plugin de sécurité Snyk, permettant d’effectuer des analyses de vulnérabilité dans le pipeline de build. Cela aide à identifier et à traiter les risques et les menaces dans vos builds.
Étant donné que Jenkins est open source, la résolution des problèmes de sécurité peut être retardée, car elle dépend de la réactivité de la communauté de développeurs.
Communauté
La communauté autour de Jenkins est plus vaste que celle de TeamCity. Comme Jenkins est open source, tout développeur peut contribuer au projet. De nombreux développeurs contribuent continuellement pour ajouter de nouvelles fonctionnalités et améliorer l’outil.
TeamCity, étant un outil commercial, est maintenu par l’équipe JetBrains. Il bénéficie d’une communauté de soutien professionnelle pour son développement.
Tarification
Jenkins est gratuit car il est open source, ce qui en fait un choix privilégié pour de nombreuses entreprises. Les organisations réalisent d’importantes économies en n’ayant pas à investir dans un outil CI tel que Jenkins.
TeamCity n’est pas gratuit. Il est proposé avec deux types de licences : une licence serveur professionnelle et une licence serveur d’entreprise. La licence serveur professionnelle permet d’utiliser gratuitement 100 configurations de build et 3 agents de build, puis coûte 299 $ pour un agent de build supplémentaire et 10 configurations de build. La licence serveur d’entreprise TeamCity démarre avec 3 agents et fournit des configurations de build illimitées à partir de 1 999 $.
Tableau comparatif
Jenkins | TeamCity | |
Langage | Java | Java |
Développeur | CloudBees, Kohsuke Kawaguchi, logiciels libres et open source | JetBrains |
Licence | Licence MIT | Logiciel commercial propriétaire |
Fonctionnalités |
|
|
Facilité d’utilisation | Oui | Oui |
Interface utilisateur | Interface très basique | Interface attrayante et soignée |
Communauté | Plus grande car open source | Plus petite que Jenkins |
Tarification | Gratuit | La licence Professional Server coûte 299 $ par agent de build après 3 agents gratuits Les coûts de la licence Enterprise Server commencent à 1999 $ |
Intégrations | 1400+ intégrations | 300+ intégrations |
Sécurité | Moins sécurisé | Plus sécurisé |
API | Prend en charge JSON, Python, API RESTful : XML | Prend en charge l’API RESTful à l’aide des messages de service et la création de plugins via l’API ouverte |
Support des langages de programmation | Java, PHP, C, C++, Fortran, Python et de nombreux langages de script | Python, C++, Java, .NET, Ruby, PHP, Node.js, etc. |
Support des conteneurs | Utilisation du plugin Docker pour Jenkins | Support Docker de première classe prêt à l’emploi |
Cycle de publication | Plus fréquent | Moins fréquent |
Rapports | Rapports détaillés pour les builds et les tests | Rapports avec une meilleure interface Web |
Conclusion
Vous êtes désormais familier avec les différences entre les deux outils d’intégration continue les plus populaires : Jenkins et TeamCity.
Lors du choix d’un outil CI pour votre organisation, plusieurs paramètres doivent être pris en compte : les options d’hébergement, les intégrations disponibles, la bibliothèque de code réutilisable, le support des conteneurs et la facilité d’utilisation et d’apprentissage de l’outil. Un outil d’intégration continue qui répond à ces critères sera un excellent choix.
Si vous avez encore des doutes, n’hésitez pas à tester les versions gratuites de Jenkins et de TeamCity. Après avoir créé quelques builds sur ces plateformes, vous serez mieux armé pour décider quel outil répond le mieux aux besoins d’intégration continue de vos projets.