Le développement de logiciels est un voyage. Il commence par la planification, l’analyse, la conception, le développement, les tests, le déploiement et la maintenance. Les développeurs de logiciels ont besoin de divers outils pour mener à bien leur mission.

GitLab CI et Jenkins sont parmi les plus grands noms de la niche de l’intégration et de la livraison continues (CI/CD). CI/CD est un ensemble de processus automatisant le développement de logiciels.

Cet article sur GitLab et Jenkins définit chaque outil, explique son fonctionnement et compare ses principales caractéristiques.

Qu’est-ce que GitLab CI ?

GitLab Continuous Integration and Delivery est un outil DevOps qui automatise les étapes nécessaires pour construire, tester et déployer votre code dans votre environnement de production.

GitLab CI

GitLab CI se compose de deux parties : l’intégration continue (CI) et la livraison/déploiement continus (CD).

L’intégration continue est chargée d’automatiser toutes les constructions. Cette fonctionnalité fournit également un retour d’information par le biais d’une revue de code et automatise les tests de sécurité et de qualité de votre code. Enfin, l’intégration continue crée un paquetage de mise à jour à déployer dans votre environnement de production.

La partie Déploiement continu de l’IC GitLab fournit automatiquement l’infrastructure et gère les tickets, les changements d’infrastructure et les versions. CD offre un environnement pour le déploiement progressif du code et permet la vérification et le suivi de toutes les modifications apportées. Cette fonctionnalité permet également aux utilisateurs de revenir en arrière lorsque cela est nécessaire.

Lorsque ces deux fonctionnalités sont combinées, vous pouvez automatiser l’ensemble du cycle de vie du développement logiciel (SDLC) avec une intervention manuelle minimale.

En résumé, GitLab CI est utilisé pour ;

  • Stocker et gérer le code
  • Automatiser le pipeline CI/CD
  • Suivre les problèmes
  • Sécuriser le code
  • Collaborer

Avantages de l’utilisation de GitLab CI

  • Rapidité accrue : vous n’avez plus besoin de passer par des processus manuels tels que la construction, le test et le déploiement du code lorsque vous utilisez GitLab CI.
  • Amélioration de la qualité du code : Avec GitLab CI, vous pouvez détecter les bogues et les erreurs dans votre code avant qu’ils ne passent en production.
  • Sécurisé : GitLab CI dispose de diverses fonctions de sécurité telles que l’analyse des vulnérabilités, la gestion des secrets et l’analyse du code afin de réduire les menaces de piratage.
  • Flexible : Vous pouvez personnaliser GitLab CI pour répondre aux besoins de votre équipe de développement. Vous pouvez utiliser cet outil avec les principaux langages et frameworks.
  • Tests automatisés : Vous n’avez pas besoin d’exécuter les tests manuellement, car vous pouvez écrire des scripts pour rédiger et exécuter les tests automatiquement.

Qu’est-ce que Jenkins ?

Jenkins est un serveur d’automatisation extensible. Cet outil open-source aide les utilisateurs à gérer et à construire des pipelines d’intégration et de livraison continues (CI/CD). Jenkins est l’outil préféré des DevOps et des ingénieurs logiciels, car il permet d’améliorer la qualité, la fiabilité et la rapidité de livraison des logiciels.

Jenkins

Jenkins exécute une série de “jobs” ou d’étapes dans un pipeline. Un job se compose de plusieurs étapes qui sont exécutées dans l’ordre. Une étape dans Jenkins peut être une construction, un test, un déploiement ou toute autre tâche pouvant être automatisée dans le cycle de vie du développement logiciel.

Les utilisations de Jenkins peuvent être résumées comme suit ;

  • Intégration continue
  • Livraison continue
  • Tests automatisés
  • Surveillance et rapports
  • Analyse du code
  • Planification des tâches

Avantages de l’utilisation de Jenkins

  • Évolutif : Vous pouvez utiliser Jenkins pour les petites et les grandes applications.
  • Configuration facile : Jenkins dispose d’un processus de configuration simple, soutenu par des ressources suffisantes.
  • Grande communauté : Jenkins existe depuis près de vingt ans et a attiré de nombreux adeptes.
  • Une variété de plugins : Vous pouvez améliorer les fonctionnalités de Jenkins à l’aide d’une grande variété de plugins.
  • Permet l’exécution de tâches en parallèle : Avec Jenkins, vous pouvez exécuter différentes tâches simultanément, ce qui vous permet de gagner du temps.

Similitudes entre GitLab CI et Jenkins

  • Ils permettent tous deux l’intégration et la livraison continues.
  • Les deux sont des outils open-source.
  • Ils disposent tous deux d’une large communauté et d’un grand nombre d’adeptes.
  • Ils prennent tous deux en charge un grand nombre de langages et de cadres de travail
  • Tous deux automatisent diverses tâches dans le cycle de vie du développement logiciel
  • Ils disposent tous deux d’un vaste écosystème de plugins et d’extensions

GitLab CI vs. Jenkins : Comparaison des fonctionnalités

FonctionnalitésGitLab CIJenkins
Open-sourceOuiOui
Prise en charge des langues Plusieurs langues Nombreuses langues
Tarifs La plupart des fonctionnalités sont disponibles dans la version gratuite. L’outil a également des plans payants avec plus de fonctionnalités.Une plateforme plus récente a été créée en 2014.
Maturité Une plateforme plus récente ; créée en 2014.Jenkins a été lancé sous le nom de Hudson mais a été forké et renommé Jenkins en 2011.
Facilité d’utilisation Facile à utiliserElle peut être compliquée pour les débutants.
HébergementInterne et externeInterne et externe
PrérequisNode.JS, Git, Ruby, GoEnvironnement d’exécution Java

GitLab CI Vs. Jenkins : Comparaison détaillée

Même si GitLab et Jenkins partagent des similitudes, les deux ont des différences distinctes qui affectent la façon dont ils gèrent le processus CI/CD. Voici quelques-unes des principales différences ;

L’architecture

Jenkins utilise une architecture maître-travailleur pour gérer les constructions.

  • Lemaître de Jenkins planifie la construction des tâches et les distribue aux travailleurs pour qu’ils les exécutent. Cette fonction permet également de surveiller l’état des travailleurs, de collecter et d’agréger tous les résultats de la construction dans le tableau de bord Web.
  • L’agent Jenkins est un exécutable Java qui s’exécute sur une machine distante. Également connu sous le nom d’agent de construction, cette fonctionnalité écoute toutes les demandes du maître et les exécute. Vous pouvez avoir jusqu’à 100 nœuds et ajouter ou supprimer des travailleurs comme bon vous semble.

GitLab CI fait partie de GitLab, une interface web pour gérer les dépôts, les demandes de fusion et bien plus encore. GitLab CI est composé de plusieurs éléments ;

  • L’outil GitLab CI/CD vous permet de gérer les builds.
  • GitLab Runners exécute tous les travaux de CI. Ce processus léger peut être exécuté dans le nuage ou sur votre machine.
  • Les configurations du pipeline CI/CD sont définies dans le fichier .gitlab-ci.yml. Ce fichier définit tous les travaux, les étapes et les étapes du pipeline.

Plugins

Jenkins dispose de plus de 1800 plugins contribués par la communauté. Ces plugins couvrent différents domaines, tels que la construction, le déploiement et l’automatisation de projets. Les utilisateurs peuvent personnaliser leurs pipelines CI/CD et étendre les fonctionnalités de Jenkins.

Les développeurs peuvent créer des plugins personnalisés à l’aide de la documentation complète de Jenkins. Ils peuvent également créer des plugins et les ajouter au répertoire de Jenkins. Jenkins dispose d’une communauté importante et active qui contribue à la création de plugins.

GitLab CI vous permet de vous connecter/de vous intégrer à des services externes pour améliorer les fonctionnalités. Sa bibliothèque de plugins et d’extensions est plus petite que celle de Jenkins, mais elle s’enrichit. Comme GitLab CI fait partie de GitLab, il est livré avec de nombreuses fonctionnalités intégrées.

Les utilisateurs peuvent personnaliser/configurer leurs flux de travail en utilisant le fichier .gitlab-ci.y ml. Vous pouvez spécifier tous les travaux, les étapes et les étapes.

Pipelines

Jenkins vous permet d’utiliser une syntaxe de pipeline à la fois déclarative et scriptée. Vous pouvez utiliser l’une des deux approches avec l’interface web ou un fichier Jenkins. C’est cette dernière approche qui est privilégiée. Vous pouvez stocker ses pipelines en tant que fichiers Jenkins dans le référentiel qui stocke le code source. La plateforme est livrée avec une interface graphique Web intégrée qui vous permet de surveiller et de visualiser les exécutions.

GitLab CI dispose d’un fichier .gitlab-ci.yml qui définit tous les pipelines. Ce fichier de configuration basé sur YML est stocké dans le répertoire racine du projet. Le fichier gitlab-ci.yml est connu pour sa syntaxe simple avec une gamme de commandes et de mots-clés prédéfinis couvrant les tâches CI/CD les plus courantes. GitLab CI s’intègre aux autres fonctionnalités de GitLab, permettant la gestion du code source, le suivi des problèmes, les revues de code, les demandes de fusion, et bien plus encore.

Comment installer Jenkins

Avant d’installer Jenkins sur votre PC, vous devez disposer d’un environnement d’exécution Java (JRE). Téléchargez Java sur le site officiel, en fonction de votre système d’exploitation. J’utiliserai Ubuntu pour démontrer le processus d’installation.

Si vous utilisez un autre système d’exploitation, consultez notre article sur l’installation de Jenkins et suivez les étapes indiquées.

Pour Ubuntu, suivez ces étapes ;

Étape 1 : Vérifiez que JRE est installé. Exécutez la commande suivante :

java -version

S’il est installé, vous obtiendrez quelque chose comme ceci :

Java version

J’ai installé la version “17.0.6”, mais vous pouvez avoir une version supérieure.

Étape 2 : Importez la clé GPG sur votre système à l’aide de cette commande ;

curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \

  /usr/share/keyrings/jenkins-keyring.asc > /dev/null

Étape 3 : Ajoutez le dépôt logiciel de Jenkins à l’aide de cette commande ;

echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \N - [signed-by=/usr/share/keyrings/jenkins-keyring.asc]

  https://pkg.jenkins.io/debian-stable binary/ | sudo tee \n- https://pkg.jenkins.io/debian-stable binary/ | sudo tee \n- https://pkg.jenkins.io/debian-stable binary/

  /etc/apt/sources.list.d/jenkins.list > /dev/null

Étape 4 : Mettez à jour votre système à l’aide de cette commande :

sudo apt update

Etape 5 : Installez Jenkins en utilisant cette commande :

sudo apt install jenkins -y

Etape6 : Vérifiez que Jenkins est installé en utilisant cette commande :

sudo systemctl status jenkins

S’il est installé, vous verrez quelque chose de similaire à ceci :

Jenkins version

Appuyez sur ctrl z sur votre clavier pour quitter et passer à l’étape suivante.

Étape 7 : Modifiez le pare-feu et Jenkins sur votre système. Utilisez cette commande :

sudo ufw allow 8080

Etape 8 : Vérifiez le statut

sudo ufw status
Jenkins firewall

Étape 9 : Si le statut indique“Inactif” à l’étape précédente, activez-le en utilisant cette commande :

sudo ufw enable

Etape 10 : Ouvrez Jenkins dans le navigateur en utilisant cette commande : sudo ufw enable : Ouvrez Jenkins dans le navigateur en tapant ceci dans votre navigateur ;

http://localhost:8080

Unlock Jenkins

Étape 11 : Obtenez le “mot de passe de l’administrateur” en exécutant cette commande :

sudo cat /var/lib/jenkins/secrets/initialAdminPassword
Jenkins administrator password

Etape 12: Déverrouiller Jenkins

Copiez le mot de passe affiché sur votre terminal, collez-le dans la boîte de dialogue “Administrator password” que vous avez ouverte à l’étape 10, et cliquez sur “Continue”.

Jenkins installation

La nouvelle fenêtre vous invitera à installer des plugins. Comme vous n’avez pas besoin de beaucoup de plugins pour le moment, vous pouvez choisir ceux par défaut et passer à l’étape suivante

Étape 13 : Créez votre compte, “enregistrer et continuer”.

Jenkins admin

Étape 14 : Établissez une configuration instantanée et commencez à utiliser Jenkins

Jenkins is ready

Comment installer GitLab CI

GitLab CI fait partie de GitLab. Pour obtenir GitLab CI, vous devez d’abord installer GitLab Runner, l’agent qui exécute tous les travaux avant de les envoyer à GitLab.

J’utiliserai Ubuntu pour démontrer le processus. Si vous avez un autre système d’exploitation, consultez la documentation officielle. Pour Ubuntu, suivez les étapes suivantes ;

Étape 1 : Mettez à jour et configurez votre système ;

sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates tzdata perl

Vous pouvez configurer une solution de messagerie pour envoyer les mises à jour ou sauter cette étape.

Étape 2 : Ajouter le dépôt de paquets GitLab

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
Install GitLab

Etape 3 : Configurer votre compte GitLab.

Il existe différentes options pour héberger GitLab. Suivez les instructions en fonction de votre choix.

Etape 4: Parcourez le nom d’hôte et connectez-vous. Cliquez sur cette commande dans votre terminal pour obtenir votre mot de passe ;

/etc/gitlab/initial_root_password 

Facultatif : Définissez vos préférences de communication pour recevoir les mises à jour des produits et les nouvelles de GitLab.

Limites de Jenkins

  • Jenkins peut être complexe à mettre en place pour les grands projets.
  • S’il n’est pas bien configuré, Jenkins peut être vulnérable aux attaques de sécurité.
  • Il peut être difficile de faire évoluer de grands projets en utilisant Jenkins.
  • Jenkins peut consommer beaucoup de ressources lorsqu’il exécute de nombreuses constructions simultanées.

Limites de Gitlab CI

  • GitLab CI peut être complexe pour les grands projets.
  • Il dépend de GitLab.
  • L’évolutivité est un problème pour les grands projets.
  • L’écosystème de plugins n’est pas aussi important que celui de Jenkins.

Avis de l’auteur

GitLab CI et Jenkins sont tous deux des outils fantastiques dans le cycle de vie du développement logiciel. J’opterai pour Jenkins si je souhaite une plateforme plus mature et un contrôle total sur la personnalisation. En revanche, j’opterai pour GitLab CI pour son interface utilisateur et pour bénéficier de l’intégration de GitLab.

Nous pensons maintenant que vous pouvez faire la différence entre GitLab CI et Jenkins. Même si les deux outils sont conçus pour remplir des fonctions similaires, ils diffèrent par leurs caractéristiques et la manière dont ils remplissent leurs fonctions. Le choix entre les deux dépendra de la nature de votre projet, de vos compétences, de vos goûts et de vos préférences.

Vous pouvez maintenant vous pencher sur ces plateformes d’hébergement Jenkins.