Im heutigen Tutorial verwenden wir die GitLab-Container-Registry zum Speichern von Bildern. Informationen zur Installation und Konfiguration von GitLab finden Sie in unserem GitLab-Leitfaden.
Beginnen wir zuerst mit der Installation des Containers.
1. Container Registry konfigurieren
Navigieren Sie zum Admin-Bereich, und das erste, was Sie bemerken, ist, dass die Container-Registry standardmäßig deaktiviert ist.
Container-Registry installieren
Wir sollten die GitLab-Konfigurationsdatei ändern. Geben Sie den folgenden Befehl ein:
a) Ändern Sie gitlab.rb
vim /etc/gitlab/gitlab.rb
Ändern Sie die folgende Zeile:
Registry_external_url 'https://gitlab.fosslinux.com:5050'
Jetzt lauscht die Registrierungs-URL auf HTTPS unter der bestehenden GitLab-URL mit einem anderen Port.
b) Nach der Änderung müssen Sie Gitlab neu konfigurieren.
gitlab-ctl rekonfigurieren
Wenn Sie fertig sind, gehen Sie zum Admin-Bereich, und dieses Mal sollten Sie ihn aktiviert sehen see.
c) Testen Sie das Container-Login von einem anderen Computer aus. Beachten Sie jedoch, dass Docker auf diesem System installiert werden sollte.
Docker-Login gitlab.fosslinux.com:5050
Der Standardspeicherort für Bilder lautet wie folgt:
/var/opt/gitlab/gitlab-rails/shared/registry
Wenn Sie den Pfad ändern möchten, verwenden Sie VIM, um ihn zu bearbeiten.
vim /etc/gitlab/gitlab.rb
Ändern Sie die folgende Zeile:
gitlab_rails['registry_path'] = "/path/to/registry/storage"
Dann neu konfigurieren.
gitlab-ctl rekonfigurieren
2. Erstellen eines Projekts
Wir werden ein neues Projekt für eine Pipeline erstellen. Gehen Sie dazu in den Admin-Bereich.
Sie sollten den Admin-Bereich ähnlich sehen:
Klicken Sie dann auf die Neue Gruppe.
Sie können Ihrer Gruppe einen beliebigen Namen geben. Geben Sie dann einen Namen für die Projekt-URL ein. Die Sichtbarkeitsstufe ist hier „Privat“; Wir haben eine Gruppe namens „gitdemo . erstellt.”
Gehen Sie dann wieder zum Admin-Bereich -> Neues Projekt
Geben Sie dem Projekt einen Namen. Wählen Sie die zuvor erstellte Gruppe für das Projekt aus.
Nachdem Sie ein Projekt erstellt haben, können Sie dem Repository eine Beispieldatei hinzufügen.
3. Containerregistrierung für Projekt aktivieren
Gehe zu Projekt Einstellungen -> Allgemeines und dann erweitern Sichtbarkeit, Projektfunktionen, Berechtigungen.
Aktivieren Sie dann die Containerregistrierung.
Gehen Sie nun zu Ihrem Projekt und Sie können die Containerregistrierung im Abschnitt "Pakete" sehen.
4. AutoDevops deaktivieren
Gehen Sie zu Ihrem Projekt -> die Einstellungen -> CICD
Dann erweitern Auto DevOps und deaktivieren Sie „Standardmäßig auf Auto DevOps-Pipeline.”
5. Erstellen Sie einen SSH-Schlüssel vom Client-/Entwicklercomputer
Hier werden wir einen ssh-Schlüssel erstellen und uns mit unserem GitLab authentifizieren. Danach können wir Git-Repositorys von unserem Client-Rechner pushen, ziehen und klonen.
a) Führen Sie den folgenden Befehl aus, um einen Schlüssel zu generieren:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
b) Öffentlichen Schlüssel kopieren:
Katze ~/.ssh/is_rsa_pub
Melden Sie sich nun beim GitLab-Server an. Gehen Sie zu Profil -> SSH-Schlüssel
c) Kopierten Schlüssel zum Schlüsselabschnitt hinzufügen und speichern.
d) Jetzt müssen wir die URL für das Clone-Repository mit SSH abrufen.
Gehe zu deinem Projekt -> Klon.
Klon mit ssh-URL kopieren.
Bevor wir das Repository auf unseren Computer klonen, müssen wir „git“ installieren
Git auf Client-Server installieren:
yum installiere git -y
Jetzt werden wir das Repository klonen und unseren Code in das Gitlab-Repository übertragen.
Globales Git-Setup
git config --global user.Name "Darshana"
git config --global user.E-Mail "[email protected]"
Führen Sie den folgenden Befehl aus, um das Repository zu klonen:
git clone [email protected]:gitdemo/fosslinux.git
Kopiere deinen Quellcode in den geklonten Ordner.
Gehen Sie zum geklonten Ordner:
cd fosslinux
Pushen Sie nun Code in das Repository:
git hinzufügen .
Git-Status
git commit -m "Demo-Projektdateien"
git push
6. GitLab Runner installieren
Es wird empfohlen, GitLab Runner auf einem anderen Server als GitLab zu installierenLab. Sie können es auch auf demselben Server installieren, wenn Sie es immer noch so wollen.
Hier verwenden wir den Docker-Executor; Daher sollten wir Docker installieren, bevor wir den Runner verwenden.
a) Der Docker-Executor
GitLab Runner kann Docker verwenden, um Jobs auf vom Benutzer bereitgestellten Images auszuführen, da der Docker-Executor verwendet wird.
Der Docker-Executor stellt bei Verwendung mit GitLab CI eine Verbindung zur Docker Engine her und führt jeden Build in einem isolierten Container mit dem vordefinierten Image aus, das in der Gitlab CI-Datei konfiguriert ist. Wir werden die Gitlab CI-Datei sehen, wenn wir die Pipeline besprechen.
Repository installieren:
curl -L https://Pakete.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sch | bash
Runner installieren:
apt-get install gitlab-runner
Überprüfen Sie den Runner-Status:
gitlab-Runner-Status
Läufer registrieren
Hier werden wir einen gemeinsamen Runner hinzufügen. Gehe zum Admin-Bereich -> Läufer.
Dann kannst du sehen Richten Sie einen geteilten Runner manuell ein Sektion. Wir benötigen unsere Gitlab-URL und den Token für den registrierten Runner.
Run Register Runner
Führen Sie den folgenden Befehl aus, um den Runner zu registrieren.
gitlab-runner registrieren
Es sollte ein paar Fragen stellen. Beantworten Sie folgende Fragen.
a) Geben Sie Ihre GitLab-Instanz-URL ein:
Bitte geben Sie die gitlab-ci-Koordinator-URL ein (e.G. https://gitlab.com) https://gitlab.fosslinux.com
b) Geben Sie den Token ein, den Sie erhalten haben, um den Runner zu registrieren:
Bitte geben Sie das gitlab-ci-Token für diesen Läufer xxxxxxxxxxxxxxxxxxxxxxx ein
c) Geben Sie eine Beschreibung für den Läufer ein; Sie können dies später in der Benutzeroberfläche von GitLab ändern:
Bitte geben Sie die gitlab-ci-Beschreibung für diesen Runner ein [hostname] Docker-runner
d) Geben Sie die mit dem Läufer verknüpften Tags ein; Sie können dies später in der Benutzeroberfläche von GitLab ändern:
Bitte geben Sie die gitlab-ci-Tags für diesen Läufer ein (durch Kommas getrennt): master,dev,qa
e) Geben Sie den Runner-Executor ein:
Bitte geben Sie den Executor ein: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell: docker
f) Wenn Sie Docker als Executor auswählen, werden Sie nach dem Standardimage gefragt, das für Projekte verwendet werden soll, die kein in . definieren .gitlab-ci.yml:
Bitte geben Sie das Docker-Image ein (zB. Rubin: 2.6): alpin:neueste
Jetzt Läufer erfolgreich registriert.
Läufer neu starten
gitlab-runner Neustart
Aktualisieren Sie nun die Seite Läufer (Admin-Bereich -> Läufer). Sie können den neu hinzugefügten Runner sehen.
Wir müssen einige Einstellungen für den Runner ändern. Also klick auf den Token.
Wählen Sie dann „Jobs ohne Tags ausführen“ und speichern Sie die Änderungen.
Gitlab-Runner-Konfigurationen ändern
Wir werden verwenden docker-in-docker (dind) Modus in der GitLab-Pipeline, also müssen wir verwenden privilegiert = wahr in unseren Docker-Containern. Daher werden wir den privilegierten Modus aktivieren.
Konfigurationsdatei bearbeiten:
vim /etc/gitlab-runner/config.toml
Ändern Sie den Abschnitt "privilegiert".
privilegiert = wahr
Nach der Änderung können Sie eine ähnliche Datei wie diese sehen.
Starten Sie dann Runner neu.
gitlab-runner Neustart
7. Variablen für GitLab PipeLine konfigurieren
Container-Registry-Variablen hinzufügen
Klicken Sie auf Projekt -> Einstellungen -> CICD -> Variablen (klicken Sie auf Erweitern).
Fügen Sie dem Schlüssel Folgendes hinzu und fügen Sie einen Wert hinzu.
CI_REGISTRY_USER CI_REGISTRY_PASSWORD
Hier müssen Sie GitLab-Login und Passwort hinzufügen.
Integration mit SonarQube-Server
Holen Sie sich den SonarQube-Token und fügen Sie ihn zu GitLab hinzu. Melden Sie sich beim SonarQube-Server an.
Gehen Sie zu Administration > klicken Sie auf Sicherheit > Benutzer > Klicken Sie auf Tokens
Es sollte ein Token-Fenster öffnen.
Token mit beliebigem Namen generieren -> Token kopieren.
Token kopieren und erneut zu GitLab gehen. Klicken Sie auf Projekt -> Einstellungen -> CICD -> Variablen
Fügen Sie eine neue Variable hinzu.
SONARQUBE_TOKEN
Sonar-Token in den Wert „SONARQUBE_TOKEN“ einfügen.
8. Erstellen Sie eine Pipeline
Folgende Dateien sollten sich im Repository-Ordner befinden
a) Dockerfile
Wir brauchen eine Docker-Datei, um unser Image zu erstellen. Folgen Sie unserem Docker-Dateileitfaden.
Hier ist unsere Docker-Datei:
FROM ddarshana/alpinenode10 ENV NODE_ENV=production RUN apk add --update curl && rm -rf /var/cache/apk/* RUN mkdir /app WORKDIR /app COPY package.json . RUN npm install COPY… CMD ["npm", "start"]
Gehen Sie zu Ihrem Projekt und erstellen Sie eine neue Datei namens "Docker File".”
b) Hinzufügen Sonar-Projekt.Eigenschaften
Die Sonar-Eigenschaftsdatei sollte sich in unserem Quellcode-Stammverzeichnis befinden, um Scandaten an den SonarQube-Server zu senden.
Hier ist unsere Datei:
# Erforderliches Metadaten-Sonar.projectKey=fosslinux-Sonar.projectName=fosslinux # Durch Kommas getrennte Pfade zu Verzeichnissen mit Quellen (erforderlich) Sonar.Quellen=./ # Sprachsonar.language=js Sonar.profile=node # Kodierung von Quelldateien Sonar.sourceEncoding=UTF-8
Gehen Sie zu Ihrem Projekt und erstellen Sie „sonar-project.Eigenschaften.”
ich. Erstellen Sie eine GitLab-CI-Datei
Gehen Sie zu Ihrem Projekt und erstellen Sie eine Datei mit dem Namen „.gitlab-ci.yml.”
Das ist unsere Datei.
Stufen: - Lint-Bilder - Codequalität - Bildvariablen erstellen und veröffentlichen: DOCKER_REGISTRY: gitlab.fosslinux.com:5050 APP_NAME: fosslinux linting: stage: Lint images image: node:4-alpine only: - master script: - npm install -g dockerlint && npm cache clean - find ./ -name Dockerfile -exec dockerlint \; Codequalität: Bühne: Codequalität Bild: ddarshana/alpine-sonarscanner Skript: - Sonar-Scanner -Dsonar.Gastgeber.url=https://sonar.fosslinux.com -Dsonar.login=$SONARQUBE_TOKEN -Dsonar.projectVersion=$CI_PIPELINE_ID -Dsonar.Nur projectName=$CI_PROJECT_NAME+$CI_BUILD_REF_NAME: - Master-Publishing: Stage: Images erstellen und veröffentlichen Image: docker:18.09.7 Dienste: - Docker: 18.09.Nur 7-dind: - Master-Skript: - Docker-Login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $DOCKER_REGISTRY - Docker-Build . -t $DOCKER_REGISTRY/gitdemo/$APP_NAME:$CI_PIPELINE_ID - docker push $DOCKER_REGISTRY/gitdemo/$APP_NAME:$CI_PIPELINE_ID - echo "Bild gepusht $APP_NAME:$CI_PIPELINE_ID" - docker logout $DOCKER_REGISTRY
Hier haben wir drei Stufen für unsere Pipeline definiert:
Stufen: - Lint-Bilder - Codequalität - Bilder erstellen und veröffentlichen
Variablen werden für die Docker-Registrierung und den Anwendungsnamen festgelegt.
Variablen: DOCKER_REGISTRY: gitlab.fosslinux.com:5050 APP_NAME: fosslinux
Sobald Sie Änderungen an den Master-Branch übertragen, sollte die Pipeline starten.
Wie Sie sehen, läuft die Pipeline. Sie können die Phasen der Pipeline sehen.
Wenn alle Phasen erfolgreich waren, können Sie die Ausgabe wie folgt sehen.
Sie können auf jede Stufe klicken und ihre Protokolle anzeigen.
a) Überprüfen Sie die Container-Registry.
Projekt -> Pakete -> Containerregistrierung
Dann kannst du unser Bild sehen.
b) Sonarbericht prüfen
Melden Sie sich bei SonarQube an und Sie können den Bericht für unser Projekt sehen see.
Das ist alles über die Erstellung einer GitLab-Pipeline mit dem GitLab-Container-Service und der Sonarqube-Integration.