GitLab

Veit Schiele

10. Juni 2021

10–12 Minuten

../../_images/gitlab.svg

1. Planen

Issues

Mit dem GitLab Issue Tracker könnt ihr gemeinsam Ideen entwickeln, wie ihr Probleme lösen und Arbeiten planen könnt. Die Issues sind immer mit einem bestimmten Projekt verknüpft, können aber auch für alle Mitglieder einer Gruppe angezeigt werden. Sie werden vor allem genutzt, um

  • die Umsetzung von neuen Ideen zu diskutieren

  • den Fortschritt der Aufgaben zu verfolgen

  • Vorschläge und (Hilfs-)Fragen aufzunehmen

  • Implementierungen zu entwickeln

Ihr könnt auf Themen verweisen und euch diesen Link anzeigen lassen. Ähnliche Aufgaben können auch markiert werden. Alternativ könnt ihr auch externe Issue-Tracker wie Jira verwenden.

Issue-Seite

Issue-Seite

Issue-Liste

Issue-Liste

Kanban-Boards

Ihr könnt Kanban-Boards verwenden, um Arbeitsabläufe zu planen, zu organisieren und zu visualisieren. Mit ihnen könnt ihr schnell Probleme verfolgen und Projekte verwalten.

Neben Kanban-Boards könnt ihr euch auch jederzeit Listen anzeigen lassen mit

  • alle offenen Issues

  • alle abgeschlossenen Issues

  • alle Issues zu einem Label

  • alle Issues, die einer Person zugeordnet sind

  • alle Issues eines Meilensteins

Kanban-Board

Kanban-Board

Zusammenarbeit

GitLab bietet euch nicht nur Versionskontrolle des Quellcodes, sondern verbessert auch die Zusammenarbeit zwischen den Entwickler*innen:

  • sie können Änderungen überprüfen, kommentieren und verbessern

  • sie können den Quellcode mit anderen teilen, die Wiederverwendung und das Inner-Sourcing verbessern.

  • sie können in ihrer eigenen Kopie des Repositorys arbeiten

  • Kontinuierliche Integration (CI) und kontinuierliche Bereitstellung (CD) beschleunigen das Testen und die Bereitstellung

Analyse

GitLab zeigt an, wer an einem Projekt gearbeitet hat und wie viel

  • Die Verzweigungen und Zusammenführungen werden auch im Zeitverlauf dargestellt, was ebenfalls zeigt, wie effektiv der Git-Workflow ist

  • Für jeden Zweig eines Repositorys zeigt GitLab den Anteil der verwendeten Programmier- und Auszeichnungssprachen an

  • GitLab-Badges geben euch einen schnellen Überblick über verschiedene Bereiche eines Projekts, vom Pipeline-Status über die Testabdeckung bis hin zu Kontaktmöglichkeiten.

2. Code

Repositorys

In jedem Projekt könnt ihr ein oder mehrere Git-Repositorys erstellen und eure Dateien dort verwalten. In einem Repository könnt ihr auch die Konfigurationsdatei .gitlab-ci.yml für eure CI/CD-Pipeline hinzufügen.

Die Weboberfläche unterstützt die Anzeige und Bearbeitung vieler Auszeichnungssprachen, darunter Markdown, reStructuredText und Jupyter notebooks.

Wenn ihr eure Änderungen an den GitLab-Server übertragt, könnt ihr nicht nur eine kurze Beschreibung der Änderungen senden, sondern auch

  • auf ein Issue verweisen

  • einen Commit signieren

  • eine GitLab CI/CD-Pipeline anstoßen

  • Pipelines mit [ci skip] in einem Git-Commit überspringen

Wiki

Für jedes GitLab-Projekt kann ein separates Wiki als Dokumentationssystem mit den folgenden Funktionen verwendet werden:

  • Seiten können über die Weboberfläche oder lokal mit Git erstellt werden

  • Inhaltsverzeichnisse können mit dem [[_TOC _]]-Tag erstellt werden

  • Anzeige der Liste aller erstellten Wikiseiten

  • Anzeige der Änderungshistorie einer Wikiseite

  • Anpassen der Seitenleiste mit der Datei _sidebar

Wiki-Seite

Wiki-Seite

Snippets

Mit GitLab Snippets könnt ihr Teile von Code und Text erstellen und mit anderen teilen. Snippets sind versioniert und können auch lokal mit Git bearbeitet werden. Ihr könnt sie auch kommentieren.

Snippet

Snippet

3. Build

Registrierung von Paketen

Mit GitLab-Packages können Unternehmen GitLab als privates Repository für eine Vielzahl beliebter Paketmanager nutzen. Entwickler*innen können Pakete erstellen und veröffentlichen, die als Abhängigkeit für nachgelagerte Projekte definiert werden können. Insbesondere können auch Docker-Container für Projekte und Gruppen registriert werden. Mit GitLab CI/CD können Docker-Images zum Testen, Erstellen und Bereitstellen eures Projekts verwendet werden.

4. Testen

Continuous Integration (CI) und Continuous Delivery (CD)

GitLab unterstützt Entwickler*innen dabei, den von ihnen geschriebenen Quellcode in ein gemeinsames Repository einzubringen, um anschließend Integrationstests zu bauen und auszuführen. Und auch die Übertragung in die Staging- oder Produktionsumgebung kann mit GitLab automatisch erfolgen.

CI/CD-Pipeline

CI/CD-Pipeline

GitLab unterstützt die folgenden Funktionen:

Multi-Plattform

Ihr könnt Builds auf Unix, Windows, MacOS und jeder anderen Plattform ausführen, die die Programmiersprache Go unterstützt.

Mehrsprachigkeit

Build-Skripte funktionieren mit Java, Python, C und vielen anderen Sprachen.

Parallele Builds

Die CI/CD-Pipeline kann schnell auf mehreren Computern gleichzeitig ausgeführt werden.

Echtzeit-Protokollierung

Das Build-Protokoll wird ständig aktualisiert.

Versionierte Pipelines

Die im Repository gespeicherte Datei .gitlab-ci.yml enthält die durchzuführenden Tests und allgemeinen Produktionsschritte.

Automatische Skalierung

GitLab CI/CD kann automatisch Docker-Container erstellen.

Build-Artefakte

Berichte wie PDF-, dotenv-Dateien usw. können erstellt und auf dem GitLab-Server zur Verfügung gestellt werden. Auch Abhängigkeiten, Lizenzen, Leistung und andere Metriken werden beispielsweise automatisch überprüft.

Docker-Unterstützung

Ihr könnt selbst definierte Docker-Container verwenden oder diese erstellen.

Geschützte Variablen

Für jede Umgebung können spezifische Secrets gespeichert und verwendet werden.

Testen

Ein typischer Anwendungsfall ist, dass ein Test nach einer Merge-Anforderung fehlschlägt. Um weitere Untersuchungen durchzuführen, könnt ihr nun einfach die bereitgestellten Reports analysieren.

Test-Report

Test-Report

Web Performance Tests

GitLab verwendet Sitespeed.io, um die Leistung von Websites zu messen und in einer performance.json-Datei auszugeben.

Browser-Performance-Test

Browser-Performance-Test

5. Release

Normalerweise wird vor der Veröffentlichung ein Git-Tag erstellt, um einen Prüfpunkt in den Versionsverlauf einzufügen. In den meisten Fällen benötigen die Benutzer jedoch kompilierte Objekte oder andere Assets, die vom CI-System ausgegeben werden können. GitLab verwendet die semantische Versionierung mit (Major).(Minor).(Patch), um automatisch zip-, tar.gz-, tar.bz2- und tar-Dateien aus dem getaggten Quellcode und den zusätzlich angegebenen Assets zu erzeugen.

Alternativ können Releases auch für einen bestimmten Meilenstein oder ein bestimmtes Datum erstellt werden.

Schließlich wird für jedes Projekt eine Liste aller Releases angezeigt.

6. Deploy

Kontinuierliche Bereitstellung (CD)

Ähnlich wie bei der kontinuierlichen Integration die Integrationstests automatisiert werden, automatisiert die kontinuierliche Bereitstellung den Rollout auf Staging- und Produktionsumgebungen.

Pages

Um eine Website mit GitLab-Pages zu veröffentlichen, könnt ihr jeden Static Site Generator (SSG) verwenden, z. B. Gatsby, Jekyll und Hugo, um nur einige zu nennen. Ihr könnt auch jede Website veröffentlichen, die direkt in einfachem HTML, CSS und JavaScript geschrieben ist.

Pages

Pages

Secrets-Management

Mit Vault können vertrauliche Informationen wie Umgebungsvariablen, Encryption-Keys und Authentifizierungs-Tokens sicher aufbewahrt werden.

7. Betrieb

Metriken

GitLab bietet eine leistungsstarke Integration mit Prometheus zur Überwachung der wichtigsten Messdaten eurer Anwendungen direkt in GitLab. Metriken für jede Umgebung werden von Prometheus abgerufen und dann in GitLab angezeigt.

Prometheus-Dashboard

Prometheus-Dashboard

Incident-Management

Ihr könnt in GitLab einrichten, dass in Notfällen E-Mails versendet und damit verbundene Probleme in GitLab erstellt werden. Es können spezielle Vorlagen für solche Vorgänge erstellt werden. GitLab kann die Vorgänge auch automatisch schließen, sobald das Problem gelöst wurde.

Status-Page

Mit der GitLab-Statusseite könnt ihr eine statische Website erstellen und bereitstellen, um während eines Vorfalls effizient mit den Benutzer*innen zu kommunizieren. Allerdings werden derzeit nur Statusseiten in AWS S3 unterstützt. Die Statusseite zeigt euch einen Überblick über die letzten Vorfälle. Wenn ihr auf einen Vorfall klickt, gelangt ihr auf die Detailseite mit

  • Status

  • Titel

  • Beschreibung

  • chronologische Liste der Aktualisierungen

Status-Page

Status-Page

Hosting und Datenschutz

Cusy hostet eure GitLab-DevOps-Pipeline nach dem deutschen Datenschutzgesetz und unter Berücksichtigung der EU-Datenschutzgrundverordnung (DSGVO). Dies ermöglicht euch die Einhaltung einer hohen IT-Compliance im Interesse eurer Kunde*innenn und Auftraggeber*innen. Weitere Informationen darüber, wie cusy eure Daten schützt, findet ihr unter ../security-and-privacy.

Kund*innen

Viele große IT-Unternehmen wie Electronic Arts und Siemens nutzen GitLab, aber auch Forschungseinrichtungen wie die NASA und die University of Washington. GitLab wird auch von Rechenzentrumsbetreibern wie Equinix genutzt.

Lizenz

Die Open Source GitLab CE ist unter der MIT-Lizenz lizenziert.

Kontaktiert uns

Gerne beantworte ich eure Anfragen und erstelle euch ein passendes Angebot für das Hosting der GitLab DevOps Pipeline.

Portrait Veit Schiele

Veit Schiele

Mail

Phone

Verwandte Inhalte