GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Kontinuierliche Integration mit GitLab, Jenkins und SonarQube einrichten

In diesem Tutorial geht es um die kontinuierliche Integration zwischen GitLab, Jenkins und SonarQube. Am Ende dieses Tutorials können Sie die Qualitätsberichte von GitLab-Repository-Codes bei SonarQube anzeigen, indem Sie Jenkins als Continuous Integrator und Sonar-Scanner als Code-Analysator verwenden.

Einrichtung der kontinuierlichen Integration mit GitLab, Jenkins und SonarQube

Bevor wir sehen, wie die kontinuierliche Integration (CI) eingerichtet wird, sehen wir uns zunächst die beteiligten Komponenten an und welche Rolle sie in unserem Setup hier spielen.

GitLab

GitLab ist eine Open-Source-Code-Hosting-Plattform für Zusammenarbeit und Versionskontrolle. Es kann auf Ihren Servern installiert werden, um Ihre Codes privat zu hosten. GitLab bietet eine Source Code Management (SCM)-Funktionalität ähnlich wie GitHub und BitBucket.

Jenkins

Jenkins ist ein Open-Source-Server für kontinuierliche Integration. Es ist ein Automatisierungstool, mit dem Sie Ihre Codes testen und kompilieren und bei erfolgreicher Erstellung für die Produktion bereitstellen können.

Jenkins wird hier verwendet, um die Codes aus GitLab abzurufen (in Echtzeit, wenn der Code übertragen oder zusammengeführt wird), die Projektcodes zu erstellen und das Ergebnis zur visuellen Interpretation an SonarQube zu übertragen.

SonarQube

SonarQube ist ein Open-Source-Server für kontinuierliche Inspektionen. Es ist ein Tool, das als Quality Gate für die Codeüberprüfung verwendet wird. Es bietet automatische Berichte zur Analyse von Codes, erkennt Fehler, Sicherheitslücken, doppelte Codes, Kommentare, Code-Smells und vieles mehr für verschiedene Programmiersprachen.

Voraussetzungen

Dieses Tutorial geht davon aus, dass GitLab, Jenkins und SonarQube bereits auf Ihrem Linux-System installiert wurden. Die Installation dieser Tools steht hier nicht im Fokus.

Nachdem Sie nun die beteiligten Tools und ihre Rollen kennen, sehen wir uns an, wie Sie unsere kontinuierliche Integration einrichten

Schritt 1. Konfigurationen bei Sonarqube

Wir benötigen ein Server-Authentifizierungstoken von SonarQube, die wir später an Jenkins weitergeben. Dieses Token ermöglicht den Zugriff auf Jenkins, um Jenkins-Builds zur Codeanalyse in SonarQube zu pushen.

  • Gehen Sie zu Mein Konto>Sicherheit
  • Bei Tokens Block, geben Sie einen beliebigen Text ein, um ein Token zu generieren.
  • Behalten Sie die Kopie des Tokens

Hier ist die Überprüfung von SonarQube, das Benutzer-Token generiert:

Jetzt erstellen wir ein Projekt, in dem alle Codeanalyseberichte veröffentlicht werden.

  • Gehen Sie zu Verwaltung> Projekte> Verwaltung
  • Klicken Sie auf Projekt erstellen
  • Erstellen Sie das Projekt mit Ihrem Project_name und Project_key. Kopieren Sie den Projektnamen und Schlüssel. Wir werden diese Anmeldeinformationen später bei der Jenkins-Konfiguration weitergeben.

Vorschau auf das Erstellen eines Projekts:

Schritt 2. Konfiguration bei GitLab

Wir benötigen auch die Access Tokens der GitLab-Benutzer, die wir später an Jenkins weitergeben. Dies wird verwendet, um die Repository-URL des GitLab-Benutzers zu authentifizieren, aus der Jenkins die Codes bezieht.

  • Gehen Sie zu Benutzereinstellungen Formular Einstellungen Menü.
  • Gehen Sie zu Zugriffstokens
  • Erstellen Sie ein persönliches Zugriffstoken, indem Sie einen beliebigen eindeutigen Namen hinzufügen (Name ) und Ablaufdatum des Tokens (Läuft ab am ). Legen Sie auch die Scopes fest to api- Vollständiger Zugriff.

Vorschau der Generierung von Benutzerzugriffstoken:

Schritt 3. Konfiguration bei Jenkins

Wir müssen GitLab und SonarQube im Jenkins-Webpanel konfigurieren. Dazu müssen wir einige notwendige Plugins installieren.

  • Melden Sie sich bei Jenkins an
  • Gehen Sie zu Jenkins verwalten> Plugins verwalten
  • Unter Verfügbar suchen Sie nach GitLab und SonarQube und installieren Sie die folgenden Plugins:
  • GitLab-Hook-Plugin
  • GitLab-Plugin
  • Git
  • SonarQube-Scanner für Jenkins

Wir benötigen SonarQube Scanner auf dem „Jenkins-Server“ installiert werden, der tatsächlich die Codeanalyse startet und die Berichte zum Projekt bei SonarQube veröffentlicht.

Um SonarQube Scanner zu installieren, können Sie die folgenden Befehle verwenden:

$ 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 

Kopieren Sie den Standort. Wir müssen diesen Speicherort (als SonarQube Scanner Installation Home Folder) bei Jenkins Configuration hinzufügen.

Wir werden auch die Sonar-Scanner-Eigenschaftsdatei unter SonarQube-Server hinzufügen konfigurieren:

$ cd conf 
$ vi sonar-scanner.properties

Entkommentieren Sie „sonar.host.url“ und fügen Sie Ihre SonarQube-Server-URL hinzu

Jetzt werden wir GitLab und SonarQube bei Jenkins konfigurieren.

  • Gehen Sie zu Jenkins verwalten> System konfigurieren
  • Auf SonarQube-Servern Geben Sie auf der Registerkarte Ihre SonarQube-Server-URL und das Server-Authentifizierungstoken ein zuvor bei SonarQube generiert.

Vorschau auf das Hinzufügen von SonarQube bei Jenkins:

Gehen Sie nun zur Registerkarte GitLab und fügen Sie Ihre GitLab-Server-URL unter GitLab-Host-URL hinzu

Unter Anmeldedaten , benötigen wir das GitLab-API-Token für den Zugriff auf GitLab. Klicken Sie auf Hinzufügen und wählen Sie Jenkins: aus Jenkins-Anmeldeinformationsanbieter

Bei Art , wählen Sie GitLab-API-Token aus aus der Dropdown-Liste. Geben Sie Ihren zuvor bei GitLab generierten API-Token ein. Fügen Sie das Token mit einer eindeutigen ID hinzu.

Stellen Sie außerdem sicher, dass Sie den richtigen Jenkins-Standort unter Jenkins-Standort haben Registerkarte.

Nachdem GitLab und SonarQube erfolgreich hinzugefügt wurden, müssen wir auch SonarQube Scanner-Konfigurationen hinzufügen.

  • Gehen Sie zu Jenkins verwalten> Globale Tool-Konfiguration
  • Beim SonarQube-Scanner Klicken Sie auf der Registerkarte auf SonarQube Scanner-Installationen
  • Deaktivieren Sie Automatisch installieren , und fügen Sie den Home-Ordner Ihrer SonarQube-Installation hinzu.

Schritt 4:Hinzufügen eines Projekts zu Jenkins zur kontinuierlichen Integration und kontinuierlichen Inspektion

Nachdem alle Konfigurationen abgeschlossen sind, erstellen wir nun ein Projekt auf Jenkins.

Gehen Sie zu Jenkins Dashboard -> Neues Element> Wählen Sie Freestyle-Projekt aus . Projekt mit eindeutigem Projektnamen erstellen

Wählen Sie im Jenkins Dashboard Ihr Projekt aus und klicken Sie auf Konfigurieren .

Scrollen Sie zu Allgemein Wählen Sie auf der Registerkarte GitLab Connection aus der Dropdown-Liste aus. Sie sehen den GitLab-Verbindungsnamen, den wir zuvor hinzugefügt haben, unter Manage Jenkins> System konfigurieren .

Scrollen Sie zu Quellcodeverwaltung Wählen Sie auf der Registerkarte Git aus . Fügen Sie die http-URL Ihres GitLab-Projekts hinzu (dies verwendet dieselbe Syntax wie der Befehl git clone). Die URL erhalten Sie auf Ihrer GitLab-Projektseite.

Geben Sie auch die Authentifizierung für die GitLab-URL an.

  • Bei Anmeldedaten , klicken Sie auf Hinzufügen und wählen Sie Jenkins: aus Jenkins-Anmeldeinformationsanbieter
  • bei Art , wählen Sie Benutzername mit Passwort aus aus der Dropdown-Liste.
  • Geben Sie Ihren Benutzernamen und Ihr Passwort für die GitLab-Anmeldung ein.
  • Fügen Sie den Schlüssel mit einer eindeutigen ID hinzu.

Sie müssen auch die zu erstellenden Zweige angeben. Wenn das Feld leer gelassen wird, werden alle Branches auf Änderungen untersucht und erstellt.

Das Hinzufügen von Branches kann wie folgt erfolgen:*/

Scrollen Sie nun zu Trigger erstellen , aktivieren Sie das Kontrollkästchen GitLab-Webhook-URL.

  • Kopieren Sie die GitLab-Webhook-URL. Wir müssen Webhook einrichten erneut bei GitLab unter Verwendung dieser URL.
  • Klicken Sie auf Erweitert
  • Als geheimes Token generieren . Kopieren Sie dieses Token, damit wird später der Webhook bei GitLab gesetzt.

Vorschau auf das Erstellen von Build-Triggern

Scrollen Sie zuletzt zu Build Registerkarte unter SonarQube-Scanner ausführen , fügen Sie die SonarQube-Konfigurationsparameter hinzu, die vom SonarQube-Scanner verwendet werden. Es kann SonarQube ProjectName, ProjectKey, SonarQube Scanner-Installationsort usw. enthalten.

Nachdem alle Konfigurationen abgeschlossen sind, müssen wir zuletzt den Webhook bei GitLab einrichten.

Webhook ist eine Methode, um die Daten in Echtzeit an andere Anwendungen weiterzugeben.
Wir verwenden Webhook bei GitLab, um die Bereitstellung von GitLab-Codes während Push-Events oder Merge-Events wie angegeben zu automatisieren.

  • Melden Sie sich bei Ihrem Gilab-Konto an.
  • gehen Sie zu Ihre Projekte bei Projekt Menü.
  • Wählen Sie Ihr Projekt aus
  • gehe zu Einstellungen> Integrationen
  • Fügen Sie die Webhook-URL und das geheime Token hinzu, die wir von der Registerkarte Jenkins Build Triggers kopiert haben.
  • Wählen Sie die gewünschten Auslöser aus und deaktivieren Sie SSL-Verifizierung .
  • Webhook erstellen

Vorschau auf die Erstellung des GitLab-Webhook:

Testen Sie den Webhook mit Push-Ereignissen .

Nach erfolgreichem Test beginnt das Projekt mit der Erstellung bei Jenkins. Melden Sie sich bei Jenkins an und überprüfen Sie die Projekt-Builds. Sie können die GitLab-Codes unter Jenkins Workspaces sehen .

Außerdem können Sie die Projektcodeberichte bei SonarQube einsehen.

Das ist es! Wir haben erfolgreich GitLab, Jenkins und SonarQube integriert. Jetzt erstellt Jenkins für alle Push-Ereignisse oder Merge-Ereignisse in unserem GitLab-Repository das Projekt und zeigt die Codequalität bei SonarQube an.

Ich hoffe, dieses Tutorial war für Sie leicht zu befolgen. Bitte lassen Sie mich wissen, wenn Sie Fragen oder Anregungen haben.

Autor :Rishi Raj Gautam ist ein Linux-Liebhaber und ein Open-Source-Aktivist.


Linux
  1. So richten Sie Gitlab für Continuous Integration and Deployment auf CentOS ein

  2. Bat – Ein Cat-Klon mit Syntaxhervorhebung und Git-Integration

  3. So integrieren Sie Jenkins mit CloudFormation und Step Functions

  4. Trimmen mit Lvm und Dm-Crypt?

  5. Einrichten einer Subdomain mit Apache unter Linux

Einrichten eines OpenVPN-Servers mit Sophos UTM und Viscosity

Einrichten eines OpenVPN-Servers mit Sophos XG und Viscosity

Einrichten eines OpenVPN-Servers mit Synology und Viscosity

Einrichten eines OpenVPN-Servers mit Tomato-Router und Viscosity

Einrichten eines OpenVPN-Servers mit Ubuntu und Viscosity

Einrichten eines OpenVPN-Servers mit VyOS und Viscosity