GNU/Linux >> Tutoriels Linux >  >> Linux

Configuration de l'intégration continue avec GitLab, Jenkins et SonarQube

Ce tutoriel concerne l'intégration continue entre GitLab, Jenkins et SonarQube. À la fin de ce didacticiel, vous pourrez afficher les rapports de qualité des codes du référentiel GitLab sur SonarQube en utilisant Jenkins comme intégrateur continu et sonar-scanner comme analyseur de code.

Configuration de l'intégration continue avec GitLab, Jenkins et SonarQube

Avant de voir comment configurer l'intégration continue (CI), voyons d'abord les composants impliqués et quels rôles jouent-ils dans notre configuration ici.

GitLab

GitLab est une plate-forme d'hébergement de code open-source pour la collaboration et le contrôle de version. Il peut être installé sur vos serveurs pour héberger vos codes en privé. GitLab fournit une fonctionnalité de gestion du code source (SCM) similaire à GitHub et BitBucket.

Jenkins

Jenkins est un serveur d'intégration continue open source. Il s'agit d'un outil d'automatisation qui peut être utilisé pour tester et compiler vos codes, et le déployer en production si la construction réussit.

Jenkins ici est utilisé pour extraire les codes de GitLab (en temps réel, lorsque le code est poussé ou fusionné), construire les codes du projet et pousser le résultat vers SonarQube pour une interprétation visuelle.

SonarQube

SonarQube est un serveur d'inspection continue open source. C'est un outil utilisé comme portail de qualité pour la revue de code. Il fournit des rapports automatiques d'analyse des codes, détecte les bogues, les vulnérabilités de sécurité, les codes dupliqués, les commentaires, les odeurs de code et bien d'autres pour les variétés de langages de programmation.

Prérequis

Ce didacticiel suppose que GitLab, Jenkins et SonarQube ont déjà été installés sur votre système Linux. L'installation de ces outils n'est pas notre objectif ici.

Maintenant que vous connaissez les outils impliqués et leurs rôles, voyons comment mettre en place notre intégration continue

Étape 1. Configurations chez Sonarqube

Nous avons besoin d'un jeton d'authentification du serveur de SonarQube, que nous passons plus tard à Jenkins. Ce jeton donne accès à Jenkins, pour pousser les builds Jenkins sur SonarQube pour l'analyse de code.

  • Accédez à Mon compte> Sécurité
  • Chez Jetons bloquer, entrez n'importe quel texte pour générer un jeton.
  • Conservez la copie du jeton

Voici l'examen de SonarQube générant le jeton de l'utilisateur :

Nous allons maintenant créer un projet dans lequel tous les rapports d'analyse de code sont publiés.

  • Aller à Administration> Projets> Gestion
  • Cliquez sur Créer un projet
  • Créez le projet avec votre Project_name et Project_key. Copiez le nom et la clé du projet. Nous transmettrons ces informations d'identification à la configuration de Jenkins ultérieurement.

Aperçu de la création d'un projet :

Étape 2. Configuration sur GitLab

Nous avons également besoin des jetons d'accès de l'utilisateur GitLab que nous transmettons plus tard à Jenkins. Ceci est utilisé pour authentifier l'URL du référentiel de l'utilisateur GitLab, d'où Jenkins extrait les codes.

  • Accédez à Paramètres utilisateur du menu Paramètres du formulaire.
  • Aller à Accéder aux jetons
  • Créez un jeton d'accès personnel en ajoutant un nom unique (Nom ) et la date d'expiration du jeton (Expire le ). Définissez également les étendues à api- Accès complet.

Aperçu de la génération des jetons d'accès utilisateur :

Étape 3. Configuration chez Jenkins

Nous devons configurer GitLab et SonarQube sur le panneau Web Jenkins. Pour cela, nous devons installer certains plugins nécessaires.

  • Se connecter à Jenkins
  • Allez à Gérer Jenkins> Gérer les plugins
  • À Disponible , recherchez GitLab et SonarQube et installez les plugins suivants :
  • Plug-in Hook GitLab
  • Plug-in GitLab
  • Git
  • Scanner SonarQube pour Jenkins

Nous avons besoin de Scanner SonarQube à installer sur le "serveur Jenkins" qui démarre l'analyse du code et publie les rapports à projeter sur SonarQube.

Pour installer SonarQube Scanner, vous pouvez utiliser les commandes suivantes :

$ wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip
$ unzip sonar-scanner-cli-3.3.0.1492-linux.zip 
$ cd sonar-scanner-3.3.0.1492-linux $ pwd 

Copiez l'emplacement. Nous devrons ajouter cet emplacement (en tant que dossier d'accueil de l'installation du scanner SonarQube) dans la configuration de Jenkins.

Nous allons également configurer le fichier de propriétés du sonar-scanner lors de l'ajout du serveur SonarQube :

$ cd conf 
$ vi sonar-scanner.properties

Décommentez "sonar.host.url" et ajoutez l'URL de votre serveur SonarQube

Nous allons maintenant configurer GitLab et SonarQube chez Jenkins.

  • Allez à Gérer Jenkins> Configurer le système
  • Sur les serveurs SonarQube , entrez l'URL de votre serveur SonarQube et le jeton d'authentification du serveur généré à SonarQube avant.

Aperçu de l'ajout de SonarQube chez Jenkins :

Maintenant, allez dans l'onglet GitLab et ajoutez l'URL de votre serveur GitLab à URL de l'hôte GitLab

À Identifiants , nous avons besoin du jeton API GitLab pour accéder à GitLab. Cliquez sur Ajouter et sélectionnez Jenkins : Fournisseur d'informations d'identification Jenkins

Chez Gentil , sélectionnez Jeton d'API GitLab de la liste déroulante. Entrez votre jeton API généré sur GitLab avant. Ajoutez le jeton avec un identifiant unique.

Assurez-vous également que vous avez le bon emplacement Jenkins à Emplacement Jenkins onglet.

Après avoir ajouté GitLab et SonarQube avec succès, nous devons également ajouter les configurations du scanner SonarQube.

  • Allez à Gérer Jenkins> Configuration globale de l'outil
  • Chez Scanner SonarQube cliquez sur Installations du scanner SonarQube
  • Décochez Installer automatiquement , et ajoutez votre dossier d'accueil d'installation de SonarQube.

Étape 4 :Ajouter un projet à Jenkins pour une intégration continue et une inspection continue

Une fois toutes les configurations terminées, nous allons maintenant créer un projet sur Jenkins.

Accédez au tableau de bord Jenkins -> Nouvel élément> Sélectionnez Projet Freestyle . Créer un projet avec un nom de projet unique

Sur le tableau de bord Jenkins, sélectionnez votre projet et cliquez sur Configurer .

Faites défiler jusqu'à Général , sélectionnez la connexion GitLab dans la liste déroulante. Vous verrez le nom de connexion GitLab que nous avons ajouté auparavant, dans Gérer Jenkins> Configurer le système .

Faites défiler jusqu'à Gestion du code source , sélectionnez Git . Ajoutez l'URL http de votre projet GitLab (cela utilise la même syntaxe que la commande git clone). Vous pouvez obtenir l'URL sur votre page de projet GitLab.

Spécifiez également l'authentification pour l'URL GitLab.

  • Sur Identifiants , cliquez sur Ajouter et sélectionnez Jenkins : Fournisseur d'informations d'identification Jenkins
  • chez Genre , sélectionnez Nom d'utilisateur avec mot de passe dans la liste déroulante.
  • Entrez votre nom d'utilisateur et votre mot de passe de connexion GitLab.
  • Ajoutez la clé avec un identifiant unique.

Vous devez également spécifier les branches à construire. Si laissé vide, toutes les branches seront examinées pour les modifications et construites.

L'ajout de branches peut se faire comme :*/

Maintenant, faites défiler jusqu'à Build Triggers , cochez la case URL du webhook GitLab.

  • Copiez l'URL du webhook GitLab. Nous devons configurer webhook à nouveau sur GitLab, en utilisant cette URL.
  • Cliquez sur Avancé
  • Générer en tant que jeton secret . Copiez ce jeton, il sera utilisé pour définir le webhook sur GitLab ultérieurement.

Aperçu de la création de déclencheurs de compilation

Enfin, faites défiler jusqu'à Construire sous l'onglet Exécuter le scanner SonarQube , ajoutez les paramètres de configuration SonarQube utilisés par le scanner SonarQube. Il peut inclure le nom du projet SonarQube, la clé du projet, l'emplacement d'installation du scanner SonarQube, etc.

Une fois toutes les configurations terminées, nous devons enfin configurer le webhook sur GitLab.

Webhook est une méthode pour pousser les données vers d'autres applications en temps réel.
Nous utilisons le webhook chez GitLab pour automatiser la livraison des codes GitLab lors des événements push ou des événements de fusion, comme spécifié.

  • Connectez-vous à votre compte Gilab.
  • accédez à vos projets à Projet menu.
  • Sélectionnez votre projet
  • aller dans Paramètres> Intégrations
  • Ajoutez l'URL du webhook et le jeton secret que nous avons copiés depuis l'onglet Jenkins Build Triggers.
  • Sélectionnez les déclencheurs souhaités et désélectionnez Vérification SSL .
  • Créer un webhook

Aperçu de la création du webhook GitLab :

Testez le webhook avec des événements Push .

Une fois le test réussi, Project commence à construire à Jenkins. Connectez-vous à Jenkins et vérifiez les versions du projet. Vous pouvez voir les codes GitLab sur Jenkins Workspaces .

Vous pouvez également voir les rapports de code de projet sur SonarQube.

C'est ça! Nous avons intégré avec succès GitLab, Jenkins et SonarQube. Désormais, pour chaque événement push ou événement de fusion vers notre référentiel GitLab, Jenkins construira le projet et montrera la qualité du code à SonarQube.

J'espère que ce tutoriel vous a été facile à suivre. N'hésitez pas à me faire part de vos questions ou suggestions.

Auteur :Rishi Raj Gautam est un amoureux de Linux et un activiste de l'open source.


Linux
  1. Comment configurer Gitlab pour l'intégration et le déploiement continus sur CentOS

  2. Bat - Un clone de chat avec coloration syntaxique et intégration Git

  3. Comment intégrer Jenkins avec CloudFormation et Step Functions

  4. Couper avec Lvm et Dm-crypt ?

  5. Configurer un sous-domaine avec Apache sous Linux

Configuration d'un serveur OpenVPN avec Sophos UTM et Viscosity

Configuration d'un serveur OpenVPN avec Sophos XG et Viscosity

Configurer un serveur OpenVPN avec Synology et Viscosity

Configuration d'un serveur OpenVPN avec Tomato router et Viscosity

Configurer un serveur OpenVPN avec Ubuntu et Viscosity

Configurer un serveur OpenVPN avec VyOS et Viscosity