Bataille de Jenkins et GitLab CI/CD

Au cours de la dernière décennie, des avancées significatives ont été réalisées dans le développement d'outils d'intégration continue (Continuous Integration, CI) et de déploiement continu (Continuous Delivery, CD). Le développement de technologies permettant d'intégrer le développement et l'exploitation de logiciels (Development Operations, DevOps) a conduit à une augmentation rapide de la demande d'outils CI/CD. Les solutions existantes sont constamment améliorées, essayant de suivre le rythme, leurs nouvelles versions sortent, dans le monde des logiciels d'assurance qualité (Quality Assurance, QA), de nombreux nouveaux produits apparaissent constamment. Avec une telle richesse de choix, choisir le bon outil n'est pas une tâche facile.

Bataille de Jenkins et GitLab CI/CD

Parmi tous les outils CI / CD existants, il existe deux projets qui méritent certainement l'attention de quelqu'un qui recherche quelque chose dans ce domaine. On parle de Jenkins et de l'outil GitLab CI/CD, qui fait partie de la plateforme GitLab. Jenkins a plus de 16000 étoiles sur GitHub. Le référentiel GitLab sur gitlab.com a marqué un peu plus 2000 étoiles. Si l'on compare la popularité des référentiels, il s'avère que Jenkins a marqué 8 fois plus d'étoiles que la plateforme, qui comprend GitLab CI/CD. Mais lors du choix d'un outil CI / CD, c'est loin d'être le seul indicateur auquel vous devez prêter attention. Il y en a plein d'autres, et cela explique pourquoi dans de nombreuses comparaisons, Jenkins et GitLab CI/CD sont très proches l'un de l'autre.

Prenons, par exemple, les données de la plateforme G2, qui accumule les critiques d'une grande variété de produits et les notes que les utilisateurs leur attribuent. Voici la note moyenne Jenkins, basé sur 288 avis, est de 4,3 étoiles. Oh gitlab ce il y a 270 avis, la note moyenne de cet outil est de 4,4 étoiles. On ne se trompera pas en disant que Jenkins et GitLab CI/CD se font concurrence à armes égales. Il est intéressant de noter que le projet Jenkins est apparu en 2011 et depuis lors, c'est un outil de prédilection pour les testeurs. Mais dans le même temps, le projet GitLab CI/CD, lancé en 2014, a pris sa place, très haut, grâce aux fonctionnalités avancées offertes par cette plateforme.

Si nous parlons de la popularité de Jenkins par rapport à d'autres plates-formes similaires, nous notons que nous, après avoir publié un article comparant les plates-formes Travis CI et Jenkins, avons organisé une enquête. 85 utilisateurs y ont participé. Les répondants ont été invités à choisir l'outil CI/CD qu'ils apprécient le plus. 79 % ont choisi Jenkins, 5 % ont choisi Travis CI et 16 % ont indiqué qu'ils préféraient d'autres outils.

Bataille de Jenkins et GitLab CI/CD
Résultats du sondage

Parmi les autres outils CI/CD, GitLab CI/CD a été mentionné le plus souvent.

Si vous êtes sérieux au sujet de DevOps, vous devez sélectionner avec soin les outils appropriés, en tenant compte des spécificités du projet, de son budget et d'autres exigences. Pour vous aider à faire le bon choix, nous allons passer en revue Jenkins et GitLab CI/CD. Cela vous aidera, espérons-le, à faire le bon choix.

Présentation de Jenkins

Bataille de Jenkins et GitLab CI/CD
Jenkins est un outil CI/CD flexible et bien connu conçu pour automatiser de nombreuses tâches liées aux projets logiciels. Jenkins est entièrement écrit en Java et publié sous la licence MIT. Il dispose d'un ensemble puissant de fonctionnalités visant à automatiser les tâches associées à la création, au test, au déploiement, à l'intégration et à la publication de logiciels. Cet outil peut être utilisé sur différents systèmes d'exploitation. Ceux-ci incluent macOS, Windows et de nombreuses distributions Linux telles que OpenSUSE, Ubuntu et Red Hat. Il existe des packages d'installation pour Jenkins conçus pour différents systèmes d'exploitation, cet outil peut être installé sur Docker et sur tout système disposant d'un JRE (Java Runtime Environment).

Les développeurs Jenkins ont créé un autre projet, Jenkins X, conçu pour fonctionner dans un environnement Kubernetes. Jenkins X intègre Helm, Jenkins CI/CD Server, Kubernetes et d'autres outils pour créer des pipelines CI/CD qui suivent les meilleures pratiques DevOps. Par exemple, GitOps est utilisé ici.

On peut ajouter au trésor des avantages de Jenkins le fait que ses scripts sont très bien structurés, compréhensibles et faciles à lire. L'équipe Jenkins a créé environ 1000 plugins qui visent à organiser l'interaction de Jenkins avec une grande variété de technologies. Les scripts peuvent utiliser des systèmes d'authentification, ce qui, par exemple, vous permet de vous connecter à divers systèmes fermés.

Lors de l'exploitation du pipeline Jenkins, vous pouvez observer ce qui se passe à chaque étape, que certaines étapes de travail aient été réalisées avec succès ou non. Vous pouvez cependant regarder tout cela sans utiliser une certaine interface graphique, mais en utilisant les capacités du terminal.

Caractéristiques de Jenkins

Parmi les fonctionnalités bien connues de Jenkins figurent la facilité d'installation, un haut niveau d'automatisation de diverses opérations et une excellente documentation. Si nous parlons de résoudre des tâches DevOps, alors Jenkins est considéré ici comme un outil très fiable, à l'aide duquel, en règle générale, il est insensé de surveiller de près l'ensemble du processus de traitement du projet. Ce n'est pas le cas avec d'autres outils CI/CD. Parlons de certaines des fonctionnalités les plus importantes de Jenkins.

▍1. Prise en charge gratuite, open source et multiplateforme

Jenkins peut fonctionner sur les plates-formes macOS, Windows et Linux. Il peut également fonctionner dans un environnement Docker, ce qui permet d'organiser une exécution uniforme et rapide des tâches automatisées. Cet outil peut également s'exécuter en tant que servlet dans des conteneurs compatibles Java tels qu'Apache Tomcat et GlassFish. Installation de Jenkins qualitativement documenté.

▍2. Développement d'un écosystème de plugins

L'écosystème de plugins Jenkins semble être beaucoup plus mature que les écosystèmes de plugins d'autres outils CI/CD. Il existe actuellement plus de 1500 plugins pour Jenkins. Ces plugins visent à résoudre un large éventail de tâches, avec leur aide, vous pouvez automatiser une variété de projets. La multitude de plugins gratuits parmi lesquels choisir signifie que si vous utilisez Jenkins, vous n'avez pas à acheter de plugins payants coûteux. Il y a une possibilité intégration Jenkins avec de nombreux outils DevOps.

▍3. Installation et configuration faciles

Jenkins est assez facile à installer et à configurer. Dans le même temps, le processus de mise à jour du système est également très pratique. Là encore, il convient de mentionner la qualité de la documentation, car vous y trouverez des réponses à diverses questions liées à l'installation et à la configuration de Jenkins.

▍4. Communauté amicale

Comme déjà mentionné, Jenkins est un projet open source dont l'écosystème comprend un grand nombre de plugins. Une large communauté d'utilisateurs et de développeurs s'est développée autour de Jenkins pour aider à développer le projet. La communauté est l'un des moteurs du développement de Jenkins.

▍5. Disponibilité de l'API REST

Lorsque vous travaillez avec Jenkins, vous pouvez utiliser l'API REST, qui étend les capacités du système. L'API pour l'accès à distance au système est présentée en trois versions : XML, JSON avec support JSONP, Python. Ici Page de documentation couvrant les détails sur l'utilisation de l'API REST Jenkins.

▍6. Prise en charge de l'exécution parallèle de tâches

Jenkins prend en charge la parallélisation des tâches DevOps. Il peut être facilement intégré aux outils pertinents et recevoir des notifications sur les résultats des tâches. Les tests de code peuvent être accélérés en organisant une construction parallèle du projet à l'aide de différentes machines virtuelles.

▍7. Prise en charge du travail dans des environnements distribués

Jenkins vous permet d'organiser des builds distribués à l'aide de plusieurs ordinateurs. Cette fonctionnalité est applicable dans les grands projets et utilise un schéma de travail selon lequel il existe un serveur Jenkins maître et plusieurs machines esclaves. Les machines esclaves peuvent également être utilisées dans des situations où il est nécessaire d'organiser les tests d'un projet dans différents environnements. Ces fonctionnalités distinguent Jenkins des autres projets similaires.

Présentation de GitLab

Bataille de Jenkins et GitLab CI/CD
CI/CD GitLab peut être appelé l'un des outils DevOps les plus récents et les plus appréciés. Cet outil open source gratuit est intégré au système de contrôle de version GitLab. La plateforme GitLab a une version communautaire, elle prend en charge la gestion du référentiel, les outils de suivi des problèmes, l'organisation de la revue de code, les mécanismes orientés documentation. Les entreprises peuvent installer GitLab localement, en le reliant aux serveurs Active Directory et LDAP pour une autorisation et une authentification sécurisées des utilisateurs.

Ici Un didacticiel vidéo pour vous aider à apprendre à créer des pipelines CI/CD à l'aide des fonctionnalités CI/CD de GitLab.

GitLab CI/CD a été initialement publié en tant que projet autonome, mais en 2015, cet ensemble d'outils a été intégré à GitLab 8.0. Un seul serveur GitLab CI/CD peut prendre en charge plus de 25000 XNUMX utilisateurs. Sur la base de tels serveurs, vous pouvez créer des systèmes hautement disponibles.

GitLab CI/CD et le projet principal GitLab sont écrits en Ruby and Go. Ils sont publiés sous la licence MIT. GitLab CI/CD, en plus des fonctionnalités habituelles des outils CI/CD, prend également en charge des fonctionnalités supplémentaires liées, par exemple, à la planification du travail.

Intégrer GitLab CI/CD dans un projet est très simple. Lors de l'utilisation de GitLab CI/CD, le processus de traitement du code du projet est divisé en étapes, chacune pouvant consister en plusieurs tâches exécutées dans un certain ordre. Les tâches peuvent être affinées.

Les tâches peuvent s'exécuter en parallèle. Après avoir configuré la séquence des étapes et des tâches, le pipeline CI/CD est prêt à fonctionner. Vous pouvez surveiller sa progression en surveillant l'état des tâches. En conséquence, l'utilisation de GitLab CI / CD est très pratique, peut-être plus pratique que d'autres outils similaires.

Fonctionnalités de GitLab CI/CD et GitLab

GitLab CI/CD est l'un des outils DevOps les plus populaires. Le projet se distingue par une documentation de haute qualité, ses fonctionnalités sont faciles et pratiques à utiliser. Si vous n'êtes pas encore familiarisé avec GitLab CI/CD, la liste suivante des fonctionnalités de cet outil vous donnera une idée générale de ce que vous pouvez en attendre. Il convient de noter que bon nombre de ces fonctionnalités sont liées à la plate-forme GitLab elle-même, dans laquelle GitLab CI / CD est intégré.

▍1. Popularité

GitLab CI/CD est un outil relativement nouveau qui a été largement utilisé. GitLab CI/CD est lentement devenu un outil CI/CD extrêmement populaire utilisé pour les tests automatisés et le déploiement de logiciels. C'est simple à mettre en place. C'est également un outil CI/CD gratuit intégré à la plateforme GitLab.

▍2. Prise en charge des pages GitLab et de Jekyll

Jekyll est un générateur de site statique qui peut être utilisé dans le système GitLab Pages pour créer des sites basés sur des référentiels GitLab. Le système prend les matériaux sources et génère un site statique prêt à l'emploi basé sur eux. Vous pouvez contrôler l'apparence et les fonctionnalités de ces sites en modifiant le fichier _config.yml, utilisé par Jekyll.

▍3. Capacités de planification de projet

Grâce à la possibilité de planifier les étapes des projets, la commodité du suivi des problèmes et de leurs groupes augmente. Cela vous permet de gérer l'organisation du travail sur les projets, de planifier leur mise en œuvre à une date précise.

▍4. Mise à l'échelle automatique des coureurs CI

Grâce à la mise à l'échelle automatique des coureurs chargés d'effectuer des tâches spécifiques, vous pouvez économiser beaucoup sur le coût de location des capacités du serveur. Ceci est très important, surtout lorsqu'il s'agit d'environnements où des projets sont testés en parallèle. De plus, cela est important pour les grands projets constitués de plusieurs référentiels.

▍5. Outils de suivi des problèmes

Les puissantes capacités de suivi des problèmes de GitLab ont conduit de nombreux projets open source à utiliser la plate-forme. GitLab CI/CD permet de tester en parallèle différentes branches de code. Les résultats des tests sont facilement analysés dans l'interface du système. Cela distingue GitLab CI/CD de Jenkins.

▍6. Restreindre l'accès aux référentiels

La plate-forme GitLab prend en charge la restriction de l'accès aux référentiels. Par exemple, ceux qui collaborent sur un projet dans un référentiel peuvent se voir attribuer des autorisations adaptées à leurs rôles. Cela est particulièrement vrai pour les projets d'entreprise.

▍7. Soutien communautaire actif

Une communauté active s'est développée autour de GitLab, qui contribue au développement de cette plateforme et de ses outils, notamment, GitLab CI/CD. L'intégration profonde de GitLab CI/CD et GitLab, entre autres, permet de trouver facilement des réponses aux questions qui se posent lors de l'utilisation de GitLab CI/CD.

▍8. Prise en charge de divers systèmes de contrôle de version

GitLab CI/CD est un système qui peut fonctionner avec plus que du code hébergé dans des référentiels GitLab. Par exemple, le code peut être stocké dans un référentiel GitHub, et le pipeline CI/CD peut être organisé sur la base de GitLab à l'aide de GitLab CI/CD.

Comparaison de Jenkins et GitLab CI/CD

Jenkins et GitLab CI/CD sont de très bons outils, tous deux capables de faire fonctionner le pipeline CI/CD en douceur. Mais si nous les comparons, il s'avère que, bien qu'ils soient similaires à bien des égards, ils diffèrent les uns des autres à certains égards.

Caractérisation
Jenkins
CI/CD GitLab

Source ouverte ou source fermée
Open source
Open source

Installation
Obligatoire.
Non requis car il s'agit d'une fonctionnalité intégrée de la plate-forme GitLab.

Caractéristiques uniques
Prise en charge des plugins.
Intégration profonde dans le système de contrôle de version.

support
Non disponible
Il y en a.

Installation et configuration
Les difficultés ne causent pas
Les difficultés ne causent pas

Auto-déploiement du système
C'est la seule façon d'utiliser le système.
Prise en charge.

Création de pipelines CI/CD
Pris en charge, à l'aide de Jenkins Pipeline.
Prise en charge.

Surveillance des performances des applications
Non disponible
Il y en a.

Écosystème
Il existe plus de 1000 plugins.
Le système est développé au sein de GitLab.

API
Prend en charge un système API avancé.
Offre une API pour une intégration plus approfondie dans les projets.

Prise en charge de JavaScript
Il y en a.
Il y en a.

Intégration avec d'autres outils
L'intégration avec d'autres outils et plates-formes est prise en charge (Slack, GitHub).
De nombreux outils d'intégration avec des systèmes tiers, en particulier - avec GitHub et Kubernetes.

Contrôle de la qualité des codes
Pris en charge - en utilisant le plugin SonarQube et d'autres plugins.
Prise en charge.

Différences entre Jenkins et GitLab CI/CD

Après avoir décrit et comparé Jenkins et GitLab CI/CD, concentrons-nous sur les différences entre ces outils DevOps. Connaître ces différences vous aidera à comprendre ceux qui préfèrent l'un de ces outils à l'autre.

  • GitLab CI/CD peut contrôler entièrement les référentiels Git. Nous parlons de la gestion des branches du référentiel et de quelques autres fonctionnalités. Mais Jenkins, bien qu'il puisse fonctionner avec des dépôts, ne donne pas le même niveau de contrôle sur eux que GitLab CI/CD.
  • Jenkins est un projet open source gratuit. Celui qui le choisit le déploie indépendamment. Et GitLab CI/CD est inclus dans la plateforme GitLab, c'est une solution clé en main.
  • GitLab CI/CD prend en charge les outils avancés de gestion des tâches qui fonctionnent au niveau du projet. Ce côté de Jenkins est moins développé.

Jenkins et GitLab CI/CD : forces et faiblesses

Vous avez maintenant une idée de Jenkins et de GitLab CI/CD. Maintenant, pour vous familiariser encore mieux avec ces outils, examinons leurs forces et leurs faiblesses. Nous supposons que vous avez déjà décidé de l'outil dont vous avez besoin. Espérons que cette section vous permettra de vous tester.

▍Points forts de Jenkins

  • Un grand nombre de plugins.
  • Contrôle total sur l'installation de l'outil.
  • Débogage simple des coureurs.
  • Configuration de nœud facile.
  • Déploiement facile du code.
  • Très bon système de gestion des identifiants.
  • Flexibilité et polyvalence.
  • Prise en charge de divers langages de programmation.
  • Le système est compréhensible à un niveau intuitif.

▍Faiblesses de Jenkins

  • Les plugins peuvent être difficiles à utiliser.
  • Lorsque vous utilisez Jenkins dans de petits projets, le temps nécessaire pour le configurer vous-même peut être déraisonnablement long.
  • Manque d'informations analytiques générales sur les chaînes CI/CD.

▍Points forts de GitLab CI/CD

  • Bonne intégration avec Docker.
  • Mise à l'échelle simple des coureurs.
  • Exécution parallèle de tâches faisant partie des étapes du pipeline CI/CD.
  • Utilisation du modèle de graphe acyclique dirigé lors de la configuration des relations entre les tâches.
  • Haut niveau d'évolutivité grâce à la possibilité d'exécution parallèle des runners.
  • Facilité d'ajout de tâches.
  • Résolution simple des conflits.
  • Système de sécurité fiable.

▍Faiblesses de GitLab CI/CD

  • Pour chaque tâche, vous devez décrire et charger/télécharger des artefacts.
  • Vous ne pouvez pas tester les résultats de la fusion des branches avant qu'elles ne soient réellement fusionnées.
  • Lors de la description des étapes du pipeline CI / CD, il n'est pas encore possible d'en distinguer les étapes individuelles.

Les résultats de

Jenkins et GitLab CI/CD ont tous deux des forces et des faiblesses. La réponse à la question de savoir quoi choisir dépend des besoins et des caractéristiques d'un projet particulier. Chacun des outils CI/CD examinés aujourd'hui possède certaines fonctionnalités, bien que ces outils aient été créés pour résoudre le même problème. Dans le même temps, Jenkins est un outil autonome, et GitLab CI/CD fait partie d'une plateforme conçue pour collaborer sur du code.

Lors du choix d'un système CI / CD, en plus de ses capacités, il convient de prendre en compte les coûts qui peuvent y être associés et avec quoi exactement les ingénieurs DevOps qui soutiennent le projet sont habitués à travailler.

Quels outils CI/CD utilisez-vous ?

Bataille de Jenkins et GitLab CI/CD

Bataille de Jenkins et GitLab CI/CD

Source: habr.com

Ajouter un commentaire