So nutzen Sie GitLab für die gleichzeitige Ausführung von Jobs (Teil 1)

Lassen Sie uns über GitLab.

Das webbasierte DevOps-Plattform GitLab bietet ein vollständiges Suite von Werkzeugen für die Softwareentwicklung, Versionskontrolle, kontinuierliche Integration, Lieferung (CI/CD) und Kommunikation. Basierend auf Git, dem bekannten verteilten Versionskontrollsystem, bietet eine zentrale Repository-Verwaltungslösung.

GitLab ermöglicht es Teams, ihre Softwareentwicklungsprojekte effizient zu verwalten, Änderungen zu verfolgen und über Code zu kommunizieren. Es bietet Werkzeuge für die Projektverwaltung sowie Funktionen wie Code-Repositories, Fehlerverfolgung, Code-Reviews, kontinuierliche Integration und Bereitstellung.

Schlüsselmerkmale von GitLab

  1. GitLabs Versionskontrollsystem, das Git als Grundlage nutzt, ermöglicht Entwicklern effizient Änderungen zu verfolgen, Zweige zu erstellen und zu mergen.
  2. GitLab bietet eine zentrale Repository-Verwaltung, die Programmierern ermöglicht, ihre Codebasis effektiv zu speichern, zu organisieren und zu verwalten.
  3. Fehlerverfolgung: Mit GitLabs integriertem Fehlerverfolgungssystem können Teams Fehler erstellen und verfolgen, sie Teammitgliedern zuweisen und den Fortschritt verfolgen.
  4. GitLab bietet eine leistungsstarke CI/CD-Pipeline, die die Build-, Test- und Bereitstellungsprozesse automatisert. Es ermöglicht es Teams, Codeänderungen sofort zu mergen, automatisierte Tests durchzuführen und Anwendungen bereitzustellen.
  5. Zusammenarbeitstools wie Code-Reviews, Kommentare und eingeblendete Gespräche erleichtern es Teammitgliedern, zusammenzuarbeiten und Feedback zu Codeänderungen zu geben.
  6. GitLab bietet Projektmanagement-Tools wie Meilensteinplanung, Boards, Kanban und Agile Boards, mit denen Teams ihren Projektfortschritt erfolgreich planen und verfolgen können.
  7. Sicherheit und Zugriffssteuerung: Um die Integrität des Codes zu gewährleisten und potenzielle Sicherheitsbedenken abzuwenden, bietet GitLab verschiedene Sicherheitsfunktionen, wie rollenbasierte Zugriffssteuerung, Genehmigungen von Merge-Anfragen und Verwaltung von Sicherheitslücken.

Abbildung 1 GitLab CICD-Pipeline-Architektur

GitLab steht in verschiedenen Editionen zur Verfügung, von einer kostenlosen Community-Edition bis hin zu einer Premium-Version mit erweiterten Funktionen und Support-Optionen. Es kann als cloudbasierte Dienstleistung über GitLab.com oder lokal selbst gehostet genutzt werden.

GitLab Continuous Integration und Continuous Delivery (CI/CD)

GitLab CI/CD ist eine leistungsfähige Plattform für Continuous Integration und Continuous Delivery, die von GitLab, einem webbasierten Git-Repository-Management-Tool, angeboten wird. Teams können mit GitLab CI/CD jeden Schritt des Softwareentwicklungszyklus automatisieren, von der Code-Commit bis zur Bereitstellung, indem sie eine Reihe von Pipelines verwenden.

Eine Übersicht des GitLab CI/CD-Prozesses finden Sie unten:

  • GitLab-Konfiguration: Bevor Sie beginnen, müssen Sie ein GitLab-Repository einrichten und konfigurieren. Sie können entweder eine eigene selbst gehostete Instanz von GitLab einrichten oder die cloudbasierte Version verwenden.
  • .gitlab-ci.yml: Die zentrale Steuerung der GitLab CI/CD ist in der Datei .gitlab-ci.yml enthalten. Diese Datei, die die CI/CD-Pipeline beschreibt, befindet sich im Wurzelverzeichnis Ihres Projekt-Repositories. Sie besteht aus verschiedenen Schritten, Aufgaben und Anweisungen, die festlegen, wie Ihr Code erstellt, überprüft und veröffentlicht werden soll. Die verwendete Sprache zur Erstellung ist YAML.
  • Pipelines: In GitLab CI/CD ist eine Pipeline eine Sammlung von Stufen und Jobs, die die für eine bestimmte Branch oder Tag in Ihrem Repository auszuführenden Aktionen spezifizieren. Sie können den Test- und Bereitstellungsprozess automatisieren, indem Sie jede Pipeline starten lassen, wenn ein neuer Commit oder Merge Request erfolgt.
  • Jobs und Stages: Stages repräsentieren die Schritte der Pipeline, einschließlich Build, Test und Deploy. Sie definieren in jedem Level einen oder mehrere Jobs – individuelle Arbeitseinheiten – innerhalb jeder Stufe. Jobs können auf separaten Runnern (wie virtuellen Maschinen, Containern oder Kubernetes-Pods) ausgeführt werden, entweder gleichzeitig oder nacheinander.
  • Runners: GitLab CI/CD verwendet Runner, um die in Ihrer Pipeline aufgelisteten Aufgaben auszuführen. GitLab bietet sowohl gemeinsam genutzte Runner als auch benutzerdefinierte Runner, die Sie in Ihrer eigenen Infrastruktur einrichten können. Ihre Builds und Tests werden durch GitLab Runner, die auf neue Jobs lauschen und sie in sicheren, isolierten Umgebungen ausführen, immer ausgeführt.
  • Job-Artefakte und Berichte: GitLab CI/CD ermöglicht es Ihnen, Artefakte zu speichern, die innerhalb der Pipeline erzeugt werden, wie z.B. Codeabdeckungsergebnisse, Testberichte oder erstellte Binärdateien. Sie können diese Artefakte herunterladen und für die Bereitstellung oder weitere Untersuchungen verwenden.
  • Integrationen und Bereitstellung: GitLab CI/CD bietet zahlreiche Integrationen zur Bereitstellung Ihres Codes in verschiedenen Umgebungen, einschließlich Kubernetes-Clustern, Cloud-Infrastruktur wie Azure, AWS oder Google Cloud, oder auch benutzerdefinierte Server. Sie haben die Möglichkeit, eigene Bereitstellungsskripte zu erstellen oder GitLab’s vorgefertigte Bereitstellungsvorlagen zu nutzen.
  • Überwachung und Feedback: GitLab CI/CD ermöglicht Ihnen den Zugriff auf Informationen über den Status und die Entwicklung Ihrer Pipelines über die GitLab-Benutzeroberfläche. Wir können Protokolle überprüfen, den Verlauf jedes Jobs verfolgen und Benachrichtigungen erhalten, wenn ein Pipelinerun erfolgreich ist oder fehlschlägt.

GitLab CI/CD umfasst eine Vielzahl von Funktionen wie Zwischenspeicherung, Umgebungsvariablen, Geheimnisverwaltung und mehr, sodass Sie Ihre CI/CD-Workflows an Ihre Anforderungen anpassen und verbessern können.

Insgesamt vereinfacht GitLab CI/CD den Prozess der Erstellung, des Testens und der Bereitstellung von Software und ermöglicht es Teams, qualitativ hochwertige Anwendungen schneller und effizienter zu entwickeln.

GitLab CI: Parallelverarbeitung

Für einen Entwickler gibt es wenig Ärgerlicheres, als lange auf das Ende aller Prozesse nach dem Pushen neuer Codewarten zu müssen. Dieses Handbuch zeigt Schritt für Schritt, wie die Parallelverarbeitung die Bereitstellungszeiten erheblich verkürzen kann.

A great approach to decrease deployment times and give your development and quality assurance teams faster feedback is to run your automated deployments in parallel as part of our Gitlab CICD pipeline. Running your deployment in parallel cuts down on wait times and makes it possible to send bug fixes and upgrades to production more quickly without sacrificing the number of tests you run.


Abbildung 2 GitLab Simultane Ausführung von Jobs

Die Durchführung paralleler Bereitstellungsautomatisierung mit GitLab CI/CD ist ziemlich einfach, aber es gibt einige Setup-Parameter, auf die Sie achten müssen. In dieser Anleitung werden wir jeden Schritt zur Einrichtung der parallelen Ausführung besprechen, um die Bereitstellungen zu beschleunigen, und erfahren, wie die Ergebnisse an das SRE-Team kommuniziert werden. Fangen wir also an!

Abbildung 3 GitLab – Parallele Bereitstellungen mit Regionen

GitLab-Workflow für parallele Bereitstellungen

Um die Ausführungszeiten zu verbessern, müssen wir mehrere Bereitstellungsaufträge gleichzeitig ausführen. In jeder Instanz eines Bereitstellungsauftrags müssen dann bestimmte Anweisungen ausgeführt werden, wie z. B. die Erstellung verschiedener Abschnitte einer Website, die Integration von Webservern und die Durchführung von Konfigurationsupdates.

Wir haben mehr als XX Jobs in den Pipelines, die wir zum Erstellen und Bereitstellen unserer GitLab-Anwendung verwenden. Nicht alle dieser Positionen sind gleichwertig. Einige sind schnelle Operationen, die nur wenige Sekunden dauern, während andere lange Prozesse sind, die sorgfältig optimiert werden müssen. Die Änderungen, die von Teammitgliedern und Mitwirkenden aus der größeren Community vorgenommen werden, werden durch jede dieser Pipelines dargestellt. Um sicherzustellen, dass die Aktualisierung wie vorgesehen funktioniert und mit dem Rest des Produkts integriert ist, müssen alle Anwendungs-/Projektmitwirkenden auf das Abschließen der Pipelines warten. Um die Produktivität unserer Teams hoch zu halten, möchten wir, dass unsere Pipelines so schnell wie möglich abgeschlossen werden.

Daher überwachen wir ständig die Länge unserer Pipelines. Zum Beispiel dauerte es beim letzten Release ungefähr 53,8 Minuten, bis eine erfolgreiche Serie von Pipelines abgeschlossen war.

Angenommen, wir führen täglich ungefähr 100 bis 200 Pipelines durch, möchten wir untersuchen, ob wir unseren Prozess optimieren können, um zu verändern, wie lange ausgeführte Jobs laufen.

Abbildung 4 GitLab – Sequentielle Ausführung von Jobs

In diesem Teil haben Sie die sequentielle Ausführung von Jobs erkundet. Im zweiten Teil dieser Serie erfahren Sie, wie wir Engpass-Jobs durch Parallelisierung gelöst haben.

Source:
https://dzone.com/articles/how-to-use-gitlab-for-simultaneous-execution-of-jo