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.
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
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
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.
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.
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.
Web-Performance-Tests
GitLab verwendet Sitespeed.io um die Performance von Websites zu messen und in einer performance.json-Datei auszugeben.
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.
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.
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
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.
Ich rufe euch auch gerne an!