Detailliertes Tutorial zur Installation von SonarQube mit Docker

Detailliertes Tutorial zur Installation von SonarQube mit Docker

Das Tutorial zur Installation von SonarQube mit Docker lautet wie folgt:

1. Ziehen Sie das Bild

1.1 Ziehen Sie das entsprechende Bild und führen Sie es aus

1.1.1 Relevante Bilder abrufen

# Ziehen Sie das SonarQube-Image $ docker pull sonarqube:9.1.0-community (empfohlen) / $ docker pull sonarqube:7.6-community
# Ziehen Sie das Postgres-Image $ docker pull postgres:9.6.23

1.1.2 Ausführen des Images

# Führen Sie die Postgres-Datenbank aus. $ docker run --name postgresqldb --restart=always -p 5432:5432 \
-e POSTGRES_USER=root \
-e POSTGRES_PASSWORD=123456 \
-d postgres:9.6.23

# Rufen Sie den Postgres-Container auf und erstellen Sie einen Benutzernamen und ein Passwort $ docker exec -it postgresqldb bash

# Melden Sie sich bei der Datenbank an psql -U root -W
# Erstellen Sie einen Benutzernamen und ein Passwort. Erstellen Sie den Benutzer „Sonar“ mit dem Passwort „Sonar“.
Sonar-Eigentümer-Sonar-Datenbank erstellen;
Gewähren Sie Sonar alle Berechtigungen für die Datenbank Sonar.

# Führen Sie den Befehl aus, ohne eine Verbindung zur Postgres-Datenbank herzustellen (nicht empfohlen)
docker run --name sonarqube --restart=always -p 9000:9000 -d naumy/hitrend-sonarqube:v1.0

# Führen Sie den SonarQube-Container aus docker run -d --name sonarqube --restart=always \
-p 9000:9000 \
-e sonar.jdbc.Benutzername=sonar \
-e sonar.jdbc.password=sonar \
-e sonar.jdbc.url=jdbc:postgresql://139.198.176.140:5432/sonar \
sonarqube:9.1.0-Community

Besuchen Sie dann: http://localhost:9000/, der Standardadministratorbenutzer und das Standardkennwort sind: admin/admin .

Bild-20211008222658468

Die eingebettete Datenbank sollte nur zu Evaluierungszwecken verwendet werden. Die eingebettete Datenbank kann nicht erweitert werden und unterstützt weder ein Upgrade auf neuere Versionen von SonarQube noch die Migration von Daten von dieser Datenbank zu anderen Datenbankmodulen.

1.2 Speichern und senden Sie das geänderte Bild

# Speichern Sie das geänderte Image docker commit -a "naumy" -m "Install Chinese plugin" 19f1cc24dc98 hitrend-sonarqube:v1.0
# Ändern Sie den Namen des alten Images in den neuen Versionsnamen, der vom Repository-Docker-Tag hitrend-sonarqube:v1.0 naumy/hitrend-sonarqube:v1.0 benötigt wird.
# Melden Sie sich beim Docker-Hub an
Docker-Anmeldung       
# Push docker push naumy/hitrend-sonarqube:v1.0

Bild-20211005120955961

2. Installation erfolgreich

Bild-20211003205325696

3. Plugin-Installation

3.1 Installieren Sie das chinesische Plugin

SonarQube bietet leistungsstarke Plug-In-Verwaltungsfunktionen. Am Beispiel des chinesischen Sprachpakets erklären wir, wie das Plug-In installiert wird:

Wählen Sie nach erfolgreicher Anmeldung Administration-Marketplace-Plugins , geben Sie Chinese in das Suchfeld ein und wählen Sie die Installation aus.

Bild-20211003205550266

Wenn der Status Install Pending anzeigt, ist die Plug-In-Installation abgeschlossen. Klicken Sie auf Restart Server damit die Installation wirksam wird.

Danach wird es auf Chinesisch angezeigt.

Installieren Sie auch das Findbug-Plugin

Bild-20211003205917633

4. Installieren Sie Gitlab im Docker

4.1. Gitlab-Image abrufen

# gitlab-ce ist eine stabile Version. Wenn Sie die Version nicht eingeben, wird standardmäßig die neueste Version heruntergeladen. $ docker pull gitlab/gitlab-ce

4.2 Ausführen des Gitlab-Image

$ docker run -d -p 443:443 -p 80:80 -p 222:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce

# -d: Im Hintergrund ausführen# -p: Den internen Port des Containers nach außen abbilden# --name: Den Container benennen# -v: Den Datenordner oder das Protokoll, die Konfiguration und andere Ordner im Container im angegebenen Verzeichnis des Hosts mounten

Gemäß der obigen Methode läuft der Gitlab-Container einwandfrei, aber beim Erstellen eines Projekts auf Gitlab wird die URL-Zugriffsadresse des generierten Projekts gemäß dem Hostnamen des Containers generiert, d. h. gemäß der ID des Containers.

Als Gitlab-Server benötigen wir eine feste URL-Zugriffsadresse, daher müssen wir gitlab.rb konfigurieren (Hostpfad: /home/gitlab/config/gitlab.rb ).

# Der Inhalt der Datei gitlab.rb besteht standardmäßig nur aus Kommentaren$ vim /home/gitlab/config/gitlab.rb
# Konfigurieren Sie die vom HTTP-Protokoll verwendete Zugriffsadresse. Wenn keine Portnummer hinzugefügt wird, ist der Standardwert 80.
externe_URL 'http://192.168.199.231'

# Konfigurieren Sie die vom SSH-Protokoll verwendete Zugriffsadresse und den Port gitlab_rails['gitlab_ssh_host'] = '192.168.199.231'
gitlab_rails['gitlab_shell_ssh_port'] = 222 # Dieser Port ist der Port 222, der während der Ausführung Port 22 zugeordnet ist: wq #Speichern Sie die Konfigurationsdatei und beenden Sie 

Bild-20211006212109889

# Starten Sie den Gitlab-Container neu $ docker restart gitlab

Zu diesem Zeitpunkt hat sich die Lageradresse des Projekts geändert. Wenn die SSH-Portadresse nicht die Standardadresse 22 ist, wird der Protokollheader ssh:// hinzugefügt. Öffnen Sie den Browser und geben Sie die IP-Adresse ein (da mein Gitlab-Port 80 ist, muss die Portnummer nicht in die Browser-URL eingegeben werden. Wenn die Portnummer nicht 80 ist, wird sie wie folgt geöffnet: ip:Portnummer)

4.3 Root-Benutzernamen und -Passwort festlegen

Gehen Sie in das Verzeichnis /home/gitlab/config/initial_root_password und sehen Sie sich das Passwort an

xwCsS7lMYx+8x3o6KIBw+Ia6Lg3VqvtHLzxzYfPNtxk=

Oder ändern Sie das Passwort nach dem Betreten des Gitlab-Containers.

root@ba96cb6a1f47:/# Gitlab-Rails-Konsole
--------------------------------------------------------------------------------
 Ruby: Ruby 2.7.4p191 (2021-07-07 Revision a21a3b7d23) [x86_64-linux]
 GitLab: 14.3.2 (92acfb1b8a9) FOSS
 GitLab-Shell: 13.21.1
 PostgreSQL: 12.7
--------------------------------------------------------------------------------

irb(main):005:0> Benutzer = Benutzer.where(id: 1).first
=> #<Benutzer-ID:1 @root>
irb(main):006:0> Benutzer.Passwort=12345678
=> 12345678
irb(main):007:0> Benutzer.Passwort_Bestätigung=12345678
=> 12345678
irb(main):008:0> Benutzer.Speichern!
In die Warteschlange von ActionMailer::MailDeliveryJob (Job-ID: 4fc2d685-2fd6-41d9-893e-2dabc7c3b366) zu Sidekiq(Mailer) mit den Argumenten gestellt: „DeviseMailer“, „Passwort ändern“, „jetzt_liefern“, {:args=>[#<GlobalID:0x00007fc6c59b5b48 @uri=#<URI::GID gid://gitlab/User/1>>]}
=> wahr
irb(main):009:0> beenden

Bild-20211006113044081

Wirkungsdiagramm nach dem Ausführen

4.4 Speichern Sie das Image und übertragen Sie es auf Dockerhub

# Speichern Sie das geänderte Image docker commit -a "naumy" -m "initialize gitlab" ba96cb6a1f47 gitlab:v1.0
docker commit -a "naumy" -m "sonarqube:7.6-community " e70c6cbe2e0b sonarqube-7.6-community:v1.0
Docker-Tag SonarQube-7.6-Community: V1.0 Naumy/SonarQube-7.6-Community: V1.0
Docker Push Naumy/SonarQube-7.6-Community: V1.0
# Ändern Sie den Namen des alten Images in den neuen Versionsnamen, der vom Repository-Docker-Tag gitlab:v1.0 naumy/gitlab:v1.0 benötigt wird
# Melden Sie sich beim Docker-Hub an
Docker-Anmeldung       
# Push docker push naumy/gitlab:v1.0

5. Aufgetretene Probleme

5.1 Unzureichender virtueller Speicher

Nach dem Starten des Containers sind etwa zehn Sekunden vergangen. Der Container wird automatisch beendet.

Fehler: Max. virtuelle Speicherbereiche vm.max_map_count [65530] ist zu niedrig, erhöhen Sie auf mindestens [262144]

Nach dem Ausführen des Containers wird dieser sofort beendet.

# Verwenden Sie den Befehl, um das laufende Protokoll anzuzeigen. Docker-Protokolle: Containername/Container-ID 

Bild-20211005110639500

Fügen Sie am Ende der Datei /etc/sysctl.conf eine Zeile hinzu

vm.max_map_count=262144

Bild-20211005110922585

Führen Sie /sbin/sysctl -p aus, um die Änderungen sofort wirksam werden zu lassen.

Bild-20211005111046958

6. Integrieren Sie Sonar und GitLab

6.1 Gitlab-Runner installieren

6.1.1 Gitlab-Token erhalten

Wählen Sie nach dem Aufrufen von Gitlab den Runner aus und erhalten Sie das entsprechende Token.

Bild-20211008170417198

6.1.2 Gitlab-Runner installieren

# Ziehen Sie das Image docker pull gitlab/gitlab-runner:v13.2.4

# Erstellen Sie ein Container-Mapping-Verzeichnis mkdir -p /dwz/docker-volume/gitlab-runner/config

# Erstellen Sie einen Container und führen Sie docker run -d --name gitlab-runner \ aus
--restart immer \
-v /dwz/docker-volume/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:v13.2.4

Konfigurieren Sie nach dem Aufrufen des Gitlab-Runner-Containers die entsprechenden Parametereinstellungen:

docker exec -it gitlab-runner gitlab-runner register -n \
--url http://139.198.166.208 \
--registration-token 9zEbBYXSyqJqpNb9QSNh \
--executor docker \
--Beschreibung "Docker Runner" \
--docker-image "sonarsource/sonar-scanner-cli:latest" \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock

Laden Sie die Gitlab-Seite erneut und das Runner-Konfigurationselement wird angezeigt.

Bild-20211008170819704

6.2 Legen Sie den Benutzernamen und das Passwort von Sonarqube fest

Stellen Sie die aktuelle SonarQube-Benutzeroberfläche und das Passwort auf admin und 123456 ein.

6.3 Projektanalyse durchführen (Projekte manuell hinzufügen)

Bild-20211006200645346

Müssen Sie Ihre bevorzugte CI integrieren und Gitlab für kontinuierliche Integration und kontinuierliche Bereitstellung verwenden?

Bild-20211009183044360

Der erste Schritt besteht darin, den Projektcodetyp auszuwählen, der erkannt werden soll:

Bild-20211009183751728

Erstellen Sie eine neue Konfigurationsdatei sonar-project.properties:

sonar.projectKey=gitlab-sonorqube
sonar.qualitygate.wait=true
sonar.language=py

Bild-20211009183240599

Schritt 2: Umgebungsvariablen hinzufügen

Bild-20211009183832036

Bild-20211006202645805

Token-Schlüssel: b23fe46d142fcfb052b05d5b3fd6fc823df0b682

Fügen Sie nach Bedarf die entsprechenden Umgebungsvariablen hinzu:

Bild-20211009163010867

6.4 CI/CD durchführen (Sonar und Gitlab)

Version 6.4.1 ist sonarqube-7.6-community

Erstellen Sie ein Gitlab-Projekt. Das im Experiment verwendete Projekt ist ein Python-Projekt.

Bild-20211008171646440

Der Inhalt der Datei .gitlab-ci.yml ist

# Diese Datei ist eine Vorlage und muss möglicherweise bearbeitet werden, bevor sie für Ihr Projekt geeignet ist.
# Um Verbesserungen an CI/CD-Vorlagen beizutragen, folgen Sie bitte dem Entwicklungshandbuch unter:
# https://docs.gitlab.com/ee/development/cicd/templates.html
# Diese spezielle Vorlage befindet sich unter:
# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Getting-Started.gitlab-ci.yml

# Dies ist eine Beispielkonfigurationsdatei für GitLab CI/CD, die ohne Änderungen ausgeführt werden sollte.
# Es demonstriert eine grundlegende 3-stufige CI/CD-Pipeline. Statt echter Tests oder Skripte
# es verwendet Echo-Befehle, um die Pipeline-Ausführung zu simulieren.
#
# Eine Pipeline besteht aus unabhängigen Jobs, die Skripte ausführen und in Phasen gruppiert sind.
# Die Phasen werden in sequenzieller Reihenfolge ausgeführt, die Jobs innerhalb der Phasen jedoch parallel.
#
# Weitere Informationen finden Sie unter: https://docs.gitlab.com/ee/ci/yaml/index.html#stages

levels: # Liste der Phasen für Jobs und deren Reihenfolge der Ausführung
  - bauen
  - prüfen
  - einsetzen

Build-Job: # Dieser Job wird in der Build-Phase ausgeführt, die zuerst ausgeführt wird.
  Phase: Bauen
  Skript:
    - echo "Der Code wird kompiliert..."
    - echo "Kompilierung abgeschlossen."

unit-test-job: # Dieser Job wird in der Testphase ausgeführt.
  Phase: Test # Er startet erst, wenn der Job in der Build-Phase erfolgreich abgeschlossen wird.
  Skript:
    - echo "Unit-Tests werden ausgeführt... Dies dauert etwa 60 Sekunden."
    - 60 Schlafplätze
    - echo "Die Codeabdeckung beträgt 90 %"

lint-test-job: # Dieser Job läuft auch in der Testphase.
  Phase: Test # Kann gleichzeitig mit dem Unit-Test-Job (parallel) ausgeführt werden.
  Skript:
    - echo „Code wird linten … Dies dauert etwa 10 Sekunden.“
    - 10 Schlafplätze
    - echo „Keine Lint-Probleme gefunden.“

Bereitstellungsjob: # Dieser Job wird in der Bereitstellungsphase ausgeführt.
  Phase: Bereitstellen # Wird nur ausgeführt, wenn *beide* Jobs in der Testphase erfolgreich abgeschlossen wurden.
  Skript:
    - echo „Anwendung wird bereitgestellt …“
    - echo „Anwendung erfolgreich bereitgestellt.“
    
Bild: 
  Name: Sonarsource/Sonar-Scanner-CLI:latest
  Einstiegspunkt: [""]

SonarQube-Prüfung:
  Skript: 
    - Sonar-Scanner -X -Dsonar.projectKey=gitlab-sonorqube -Dsonar.host.url=http://139.198.176.140:9000 -Dsonar.login=cbd26f998beeb61d7a991e0282efc430b020d9f1 -Dsonar.login=admin -Dsonar.password=admin -Dsonar.language=py -Dsonar.java.binaries=build/ -Dsonar.projectVersion=1.0 -Dsonar.sources=. 
  allow_failure: wahr
  nur:
    - Hauptnummer oder der Name Ihres Hauptzweigs

Nach dem Absenden des Codes können Sie die entsprechenden Testinformationen erhalten.

https://sm.ms/image/ykYPlDgZVvuhzsq

Version 6.4.2 ist sonarqube-9.1-community

Der Inhalt der Datei .gitlab-ci.yml ist

SonarQube-Prüfung:
  Bild: 
    Name: Sonarsource/Sonar-Scanner-CLI:latest
    Einstiegspunkt: [""]
  Variablen:
    SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar" # Definiert den Speicherort des Analyse-Task-Cache
    GIT_DEPTH: "0" # Weist Git an, alle Zweige des Projekts abzurufen, die für die Analyseaufgabe erforderlich sind
  Cache:
    Schlüssel: "${CI_JOB_NAME}"
    Pfade:
      - .sonar/cache
  Skript: 
    - Sonar-Scanner -X -Dsonar.projectKey=gitlab-sonorqube -Dsonar.host.url=http://139.198.176.140:9000 -Dsonar.login=7f9e3408ac11e0699e2f8afdb21a662cc8ab2698 -Dsonar.login=admin -Dsonar.password=123456 -Dsonar.language=py -Dsonar.java.binaries=build/ -Dsonar.projectVersion=1.0 -Dsonar.sources=. 
  allow_failure: wahr
  nur:
    - Hauptnummer oder der Name Ihres Hauptzweigs

Nach dem Absenden des Codes führt Gitlab automatisch CI/CD durch:

Bild-20211009174921078

Klicken Sie hier, um zu prüfen, ob der entsprechende Status und Inhalt den Anforderungen entspricht:

Bild-20211009174902725

Nach Abschluss des Laufs werden Ihnen die entsprechenden Testanalyseergebnisse angezeigt:

Bild-20211009163521482

6.5 Während des Integrationsprozesses aufgetretene Probleme

Die Konfigurationsdatei ist falsch:

Es wird Python-Code verwendet, daher wird in Zukunft py als Sprachauswahl verwendet.

Bild-20211009190159197

Bild-20211009190324553

7. Zusammenfassung

Die derzeit verwendeten Tools sind:

sonarqube:9.1.0-community, gitlab/gitlab-runner:v13.2.4, postgres:9.6.23, gitlab/gitlab-ce, sonarsource/sonar-scanner-cli:latest

Bild-20211009163631709

Nachdem der Entwickler den Code an das Gitlab-Repository übermittelt hat, wird die automatische Zusammenführungsaufgabe des Master-Zweigs ausgelöst, der Code gescannt (er kann in andere Testzweige geändert werden) und die Scanergebnisse werden an die SonarQube-Plattform zurückgegeben.

Bild-20211009175746382

Dies ist das Ende dieses Artikels zur Installation von SonarQube mit Docker. Weitere Informationen zur Installation von SonarQube mit Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • So erstellen Sie SonarQube mit Docker
  • Docker erstellt die Codeerkennungsplattform SonarQube und erkennt den Prozess von Maven-Projekten

<<:  Einfaches Grafik-Tutorial zur Verwendung von Adobe Brackets

>>:  Eine kurze Diskussion über den Unterschied zwischen MySQL-Primärschlüsselindex und Nicht-Primärschlüsselindex

Artikel empfehlen

HTTP-Statuscodes

Dieser Statuscode gibt Auskunft über den Status d...

Detaillierte Erläuterung des Lazy Loading und Preloading von Webpack

Inhaltsverzeichnis Normale Belastung Lazy Loading...

Codebeispiele für allgemeine Docker-Datenvolumenvorgänge

Wenn der Entwickler Dockerfile zum Erstellen des ...

SQL-Aggregation, Gruppierung und Sortierung

Inhaltsverzeichnis 1. Aggregierte Abfrage 1. COUN...

Häufig verwendete JS-Funktionsmethoden im Frontend

Inhaltsverzeichnis 1. E-Mail 2. Mobiltelefonnumme...

Detaillierte Erklärung von react setState

Inhaltsverzeichnis Ist setState synchron oder asy...

So verstehen und identifizieren Sie Dateitypen in Linux

Vorwort Wie wir alle wissen, ist in Linux alles e...

Analyse des Remote-Debuggings und des Timeout-Betriebsprinzips von Webdiensten

Remote-Debugging von Webdiensten In .NET ist die ...

CentOS 7: Erläuterung zum Wechseln des Boot-Kernels und des Boot-Modus

Centos7-Switch-Boot-Kernel Hinweis: Bei Bedarf wi...

Detaillierte Erklärung des Inline-Formats von HTML-Tabellen

Inline-Format <colgroup>…</colgroup> ...

So verwenden Sie video.js in Vue zum Abspielen von Videos im M3U8-Format

Inhaltsverzeichnis 1. Installation 2. Einführung ...

Bootstrap3.0-Studiennotizentabelle bezogen auf

In diesem Artikel werden hauptsächlich Tabellen e...