GitLab Hosting in Deutschland für eine effiziente DevOps-Pipeline

1. Plan

Issues

Mit dem GitLab Issue Tracker könnt ihr gemeinsam Ideen entwickeln, wie ihr Probleme lösen und Arbeiten planen könnt. Dabei sind die Issues zwar immer mit einem bestimmten Projekt verknüpft, sie können jedoch auch allen Mitgliedern einer Gruppe angezeigt werden. Meist werden sie genutzt um

  • die Umsetzung neuer Ideen zu diskutieren
  • den Fortschritt der Aufgaben zu verfolgen
  • Vorschläge und (Support-)Fragen aufzunehmen
  • Implementierungen auszuarbeiten

Ihr könnt auf Issues verweisen und euch diesen Verweis anzeigen lassen. Auch ähnliche Issues können markiert werden. Alternativ könnt ihr auch externen Issue-Tracker wie Jira verwenden.

Issue-Seite

Issue-Seite

Issue-Liste

Issue-Liste

Kanban-Boards

Zum Planen, Organisieren und Visualisieren von Workflows könnt ihr Kanban-Boards verwenden. Mit ihnen könnt ihr schnell Issues nachverfolgen und Projekte verwalten.

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

  • alle offenen Issues
  • alle geschlossenen Issues
  • alle Issues zu einem Label
  • alle Issues, die einer Person zugewiesen sind
  • alle Issues eines Milestone
Kanban-Board

Kanban-Board

Zusammenarbeit

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

  • sie können Änderungen überprüfen, kommentieren und verbessern
  • sie können den Quellcode mit anderen teilen, die Wiederverwendung und Inner Sourcing verbessern.
  • ihr könnt in eurer eigenen Kopie des Repository arbeiten
  • Continuous Integration (CI) und Continuous Delivery (CD) beschleunigen das Testen und Bereitstellen

Analyse

  • GitLab zeigt an, wer wann wieviel an einem Projekt mitgearbeitet hat
  • Auch die Verzweigungen und Zusammenführungen werden euch im zeitlichen Verlauf angezeigt, womit auch offensichtlich wird, wie effektiv der Git-Workflow ist
  • Für jeden Zweig eines Repository 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

Repositories

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

Die Web-Oberfläche unterstützt das Anzeigen und Editieren vieler Auszeichnungssprachen, u.a. Markdown, reStructuredText und Jupyter Notebooks.

Mit dem Übertragen eurer Änderungen auf den GitLab-Server könnt ihr nicht nur eine kurze Beschreibung der Änderungen mitschicken sondern auch

  • auf ein Issue verweisen
  • einen Commit signieren
  • eine GitLab-CI/CD-Pipeline auslösen
  • Pipelines überspringen mit [ci skip] im Git-Commit

Wiki

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

  • Seiten können in der Web-Oberfläche oder lokal mit Git erstellt werden
  • Inhaltsverzeichnisse können mit dem [[_TOC_]]-Tag erstellt werden
  • Anzeige der Liste aller erstellten Wiki-Seiten
  • Anzeigen des Änderungsverlaufs einer Wiki-Seite
  • Anpassen der Seitenleiste über die Datei _sidebar
Wiki-Seite

Wiki-Seite

Snippets

Mit GitLab Snippets könnt ihr Code- und Textteile erstellen und für andere freigeben. Diese sind versioniert und können auch lokal mit Git bearbeitet werden. Außerdem könnt ihr sie kommentieren.

Snippet

Snippet

3. Build

Paketregistrierung

Mit GitLab Packages können Unternehmen GitLab als privates Repository für eine Vielzahl gängiger Paketmanager verwenden. Entwickler*innen können Pakete erstellen und veröffentlichen, die als Abhängigkeit von nachgelagerten Projekten 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 für Test, Build und Deploy Eures Projekts verwendet werden.

4. Test

Continuous Integration (CI) und Continuous Delivery (CD)

GitLab unterstützt Entwickler*innen beim Zusammenführen des von ihnen geschriebenen Quellcodes in einem gemeinsam genutzten Repository um anschließend Builds zu erstellen und Integrationstests durchzuführen. Und auch die Überführung in das Staging- oder Production-Environment kann automatisch mit GitLab erfolgen.

CI/CD-Pipeline

CI/CD-Pipeline

Dabei unterstützt GitLab folgende Features:

Multi-Plattform
Ihr könnt Builds unter 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 Comuptern gleichzeitig ausgeführt werden
Realtime Logging
Das Build-Log wird ständig aktualisert
Versionierte Pipelines
Die im Repository gespeicherte .gitlab-ci.yml-Datei enthält die auszufünhrenden Tests und allgemeine Produktionsschritte
Automatische Skalierung
GitLab CI/CD kann Docker-Container automatisch erstellen
Build-Artefakte
Es können z.B. Berichte wie PDF, dotenv, etc. erstellt werden und auf dem GitLab-Server bereitgestellt werden. So können z.B. auch Abhängigkeiten, Lizenzen, Performance und andere Metriken automatisch überprüft werden.
Docker-Unterstützung
Ihr könnt selbst-definierte Docker-Container verwenden oder welche erstellen
Geschützte Variablen
Für jede Umgebung können spezifische Secrets gespeichert und verwendet werden

Testing

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

Test-Report

Test-Report

Web-Performance-Tests

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

Browser-Performance-Test

Browser-Performance-Test

5. Release

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

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

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

6. Deploy

Continuous Delivery

Ähnlich wie bei Continuous Integration Integrationstests automatisiert werden, wird mit Continuous Delivery das Roll out auf Staging- und Production-Umgebungen automatisiert.

Pages

Um eine Website mit GitLab Pages zu veröffentlichen, könnt ihr einen beliebigen 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 Authentication Tokens sicher verwahrt werden.

7. Operate

Metriken

GitLab bietet eine leistungsstarke Integration mit Prometheus zur Überwachung der wichtigsten Messdaten Eurer Apps 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 versand werden und zugehörige Issues in GitLab angelegt werden. Dabei können spezifische Vorlagen für solche Issues erstellt werden. Auch kann GitLab die Issues automatisch schließen, wenn das Problem gelöst wurde.

Statusseite

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

  • Status
  • Titel
  • Beschreibung
  • chronologisch geordneter Liste der Aktualisierungen
Status-Seite

Status-Seite

Hosting und Datenschutz

Cusy hostet Eure GitLab-Instanz nach den Vorgaben des deutschen Datenschutzrechts und unter Berücksichtigung der neuen europäischen Datenschutz-Grundverordnung (EU-DSGVO), die 2018 in Kraft trat. Dies ermöglicht euch die Einhaltung einer hohen IT-Compliance im Interesse Eurer Kunden und Auftraggeber. Weitere Informationen darüber, wie Cusy Eure Daten schützt, erfahrt ihr unter Sicherheit und Datenschutz.

Referenzen GitLab

GitLab weist viele große IT-Unternehmen als Kunden aus. Unter den Anwendern von GitLab befinden sich IT-Unternehmen wie Electronic Arts, Siemens, aber auch Forschungseinrichtungen wie NASA und die University of Washington. GitLab wird außerdem von Rechenzentrumsbetreibern wie Equinix genutzt.

Lizenz

GitLab CE ist lizensiert unter der MIT-Lizenz.

Meldet euch

Ich berate euch gerne und erstelle euch ein passgenaues Angebot für das Hosting von GitLab.

Portrait Veit Schiele
Veit Schiele
Telefon: +49 30 22430082

Ich rufe euch auch gerne an!

Jetzt anfragen