GitLab - Allgemeine Informationen

Alle Informationen auf dieser Seite sind auch direkt auf GitLab einsehbar.

Was ist Git?

Git ist ein weitverbreitetes Versionsverwaltungssystem, das eine effiziente Zusammenarbeit an Softwareprojekten ermöglicht. Ebenso eignet es sich für die Arbeit an wissenschaftlichen Dokumenten und die Verwaltung von Forschungsdaten.

Git zeichnet sich durch seine dezentrale Struktur aus, wodurch mehrere Personen gleichzeitig an verschiedenen Teilen eines Projekts arbeiten können, ohne ständig mit einem zentralen Server verbunden sein zu müssen. Anstatt dass der volle Versionsverlauf der Daten sich nur an einem einzigen Ort befindet, wird in jeder lokalen Arbeitskopie der vollständige Verlauf aller Versionen gespeichert. Git erfasst alle Änderungen in einem sogenannten Repository und ermöglicht es, zwischen verschiedenen Versionen zu wechseln, Änderungen zu verfolgen und diese bei Bedarf zu kombinieren oder rückgängig zu machen.

Was ist GitLab?

GitLab ist eine Webanwendung zur Versionsverwaltung von Softwareprojekten und Forschungsdaten auf Basis von Git. Es unterstützt alle grundlegenden Funktionalitäten von Git zur Erfassung, Speicherung, Verteilung und Kombination von Versionsänderungen und bietet gleichzeitig eine Weboberfläche zur grafischen Interaktion mit den Repositorien.

Neben der grundlegenden Anwendung zur Codeverwaltung und Versionskontrolle bietet es umfangreiche Tools für eine moderne Softwareentwicklung und grundlegendes Projektmanagement. Dazu gehören projektspezifische Wikis und Ticket-Systeme, Möglichkeiten zur Qualitätssicherung und Automatisierung durch Continuous Integration und Continuous Delivery (CI/CD), sowie eine integrierte Paket- und Containerverwaltung.

Damit ist es eine ideale Wahl für Arbeitsgruppen, aber auch Einzelpersonen, die ihre Entwicklungs- und Verwaltungsprozesse effizienter, kollaborativer und qualitativ hochwertiger gestalten möchten. Obwohl diese Tools vor allem im Bereich der Softwareentwicklung eingesetzt werden, bieten sie weitreichende Möglichkeiten in verschiedenen Anwendungsszenarien.

GitLab an der Universität Rostock

GitLab Enterprise Edition ist eine selbst-gehostete Version von GitLab, die es Organisationen ermöglicht, eine private und individuell angepasste Instanz von GitLab auf ihren eigenen Servern einzurichten (on-premise). Damit erhält man eine erhöhte Kontrolle über die Daten und Sicherheit, sowie Möglichkeiten zur Integration in existierende Infrastruktur. Es gibt verschiedene Ausführungen der Enterprise Edition. Eine kostenlose Variante (Free) und zwei lizenzierte Varianten (Premium und Ultimate), welche in ihren Funktionalitäten aufeinander aufbauen. Einen Feature-Vergleich findet man hier.

Das IT- und Medienzentrum der Universität Rostock betreibt einen GitLab-Server Free Enterprise Edition. Dieser läuft komplett unabhängig von der öffentlichen GitLab Cloud-Instanz. Sämtliche (Nutzer-)Daten liegen lokal auf universitätsinternen Servern.

Funktionsumfang

Abgesehen von einigen wenigen Ausnahmen, bietet der GitLab-Server der Universität Rostock alle Funktionen der freien Enterprise Edition von GitLab. Eine ausführliche Übersicht der verfügbaren Funktionalitäten, inklusive weiterführenden Links zur Dokumentation, ist hier zu finden (das Label "Free" ist zu beachten).

Zu den wichtigsten Kernfunktionen gehören unter anderem:

  • Versionsverwaltung mit Git

  • Projektmanagement mit Ticket-System und Wikis

  • Continuous Integration / Continuous Delivery (CI/CD)

  • Paket- und Container Registry

  • Git Large File Storage

Darüber hinaus sind einige ausgewählte Premium Features verfügbar.

Einige Ausnahmen sind zu beachten:

  • GitLab Pages (das Hosten statistischer Websites über GitLab) werden aktuell nicht unterstützt.

  • Projekt-Imports von Gitea, Bitbucket Server/Cloud, FogBugz und Manifest Dateien sind deaktiviert.

Wichtige Begriffe

Git und GitLab sind vielschichtige Werkzeuge mit vielen technischen Konzepten und Begriffen. Als Hilfestellung werden hier einige Begriffe allgemeinverständlich erklärt.

Git-Begriffe

  • Ein Repository ist eine Sammlung von Dateien, deren Bearbeitungsverlauf in Schnappschüssen versioniert wird. Mit Git kann man beliebig viele Repositorien verwalten.

  • Ein Commit ist ein Schnappschuss der Daten im Repository.
    Beim Erstellen eines Commits werden die gesetzte Email-Adresse, der Name, das Datum, die Uhrzeit und ein beliebiger Kommentar untrennbar mit den Datei-Inhalten der neuen Version verbunden. Dies ist eine grundlegende Sicherheitsvorkehrung von Git, um nachträgliche Änderungen dieses Schnappschusses zu verhindern. Es soll eine konsistente Historie sichergestellt werden.

  • Ein Branch ist ein benannter Verlauf von Schnappschüssen, um die Übersichtlichkeit eines Repository zu wahren.

  • Mit dem Git-Befehl `clone` kann eine (lokale) Kopie eines bestehenden Repository erzeugt werden. Beispielsweise lässt sich ein auf einem Server gespeichertes Repository auf den eigenen PC klonen.

  • Die Git-Befehle `pull` und `push` können Branches von Repositorien auf unterschiedlichen Geräten synchronisieren (wie etwa dem eigenen PC und dem GitLab der Universität Rostock). Sobald zwei Branches synchronisiert wurden, beinhalten beide eine Kopie aller Daten, d.h. den gesamten Verlauf von Schnappschüssen.

GitLab-Begriffe

  • Ein Projekt in GitLab enthält fast immer ein Git-Repository und bietet viele zusätzliche Funktionen für dessen Verwaltung sowie umfangreiche Tools für eine moderne Softwareentwicklung. Dazu gehört ein projektspezifisches Wiki und Ticket-System (Issues), Möglichkeiten zur Qualitätssicherung durch Continuous Integration und Continuous Delivery (CI/CD), sowie eine integrierte Paket- und Containerverwaltung.
  • Jedes Projekt ist einem Namensraum zugeordnet. Alle Nutzer haben jeweils ihren eigenen Namensraum für persönliche Projekte. Genauso haben alle Gruppen jeweils ihren eigenen Namensraum für Gruppenprojekte. Lese- und Schreibzugriff für ein Projekt hängen indirekt von dessen Namensraum ab: In Projekten im Namensraum von anderen Nutzenden richten sich Ihre Berechtigungen nach der Sichtbarkeit des Projekts, und falls Sie Projektmitglied sind, Ihrer Nutzerrolle im Projekt. In Gruppenprojekten richten sich die Berechtigungen außerdem nach der Sichtbarkeit der Gruppe, und für Gruppenmitglieder nach deren Nutzerrolle in der Gruppe.
Wer hat Zugriff auf GitLab?

Das GitLab der Universität Rostock ist generell aus dem gesamten Internet erreichbar. Dies bedeutet, dass alle öffentlichen Projekte und Gruppen von jeder Person mit einem Internetzugang einsehbar sind. Der Zugriff auf interne und private Projekte bzw. Gruppen ist angemeldeten Nutzern mit den entsprechenden Rollenberechtigungen vorbehalten. Genauere Informationen zu Rollen und zur Sichtbarkeit von Projekten und Gruppen entnehmen Sie den Nutzungshinweisen unter Projekte und Gruppen.

Anmelden können sich alle Personen mit einem gültigen zentralen ITMZ Nutzeraccount. Der Zugriff erfolgt über den Single-Sign-On (SSO) der Universität Rostock mit dem persönlichen Nutzungskennzeichen und dazugehörigem Passwort. Eine separate Freischaltung durch das ITMZ ist nicht notwendig.

Darüber hinaus können externe Partner eingeschränkten Zugriff auf GitLab erhalten, wenn für sie aus begründeten Kollaborationszwecken manuell ein Konto erstellt wurde.

Anwendungsmöglichkeiten

GitLab wird in erster Linie für die Verwaltung von Softwareprojekten eingesetzt. Es ist aber flexibel genug, um Projekte auch in anderen universitären Kontexten zu verwalten.

  • Forschungsprojekte, vor allem wenn sie Softwareaspekte beinhalten. Neben Programmcode können auch Texte, Abbildungen und andere notwendige Dateien verwaltet werden. Selbst zugehörige Forschungsdaten können im selben GitLab Projekt mit abgelegt werden – es sollten aber unbedingt die Informationen zur Speicherung von Daten (siehe unten) beachtet werden.
  • Dokumentation über Gerätschaften, Labore, Arbeitsprozesse oder beliebige andere Einrichtungen und Vorgehensweisen. Texte, Bilder und Videos lassen sich mit GitLab Markdown übersichtlich anordnen, sodass alle, die sich für die aktuelle Version der Dokumentation interessieren, nur einen Webbrowser benötigen. Sie können zusätzlich ein Ticket-System oder ein Wiki verwenden, um andere zu ermutigen, die Dokumentation auf dem neuesten Stand zu halten.
  • In der Lehre, vor allem beim Programmieren, kann GitLab genutzt werden, um Aufgaben oder zu vervollständigende Softwareprojekte zur Verfügung zu stellen. Mit etwas mehr Aufwand könnten auch CI/CD Pipelines eingerichtet werden, welche Uploads von Studenten automatisch auf Korrektheit überprüfen.
  • Und vieles mehr, wie Sitzungsprotokolle, Unterrichtsmaterialien, usw. Jedes Projekt, das mehrere Iterationen digitaler Inhalte umfasst, kann von der Verwaltung in GitLab profitieren, insbesondere wenn dabei mehrere Personen zusammenarbeiten. Es ist zu beachten, dass Git am besten mit textbasierten Inhalten funktioniert. Für die Integration binärer Inhalte sollte Git LFS verwendet werden (Umgang mit Binärdateien und großen Projekten > Git Large File Storage).
Speicherung von Daten

GitLab kann für die Versionierung und Verwaltung von Texten, Sourcecode und durch diesen Code zu generierende bzw. zu analysierende Daten verwendet werden. Handelt es sich dabei um binäre Dateien (z.B. Bilder, Videos, Archive, Office-Dateien, usw.), sollte Git LFS (Umgang mit Binärdateien und großen Projekten > Git Large File Storage) konfiguriert werden, um GitLab die effiziente Verwaltung der Daten im Repository zu ermöglichen. Dies muss von Anfang an aktiviert werden, da eine spätere Migration der Dateien unter Git LFS relativ umständlich ist.

Des Weiteren sind folgende Aspekte zu berücksichtigen:

Projekt- und Speicherlimits

Da Git in erster Linie für die Versionierung von Textdateien konzipiert ist, sollten Repositorien relativ klein bleiben (unter 1 GB). Folgende Grenzen sind derzeit im GitLab der Universität Rostock gesetzt:

  • Es dürfen maximal 10 persönliche Projekte angelegt werden. In begründeten Fällen, kann diese Grenze durch einen Administrator erhöht werden. Bitte wenden Sie sich dazu an den GitLab Support vom IT- und Medienzentrum.
  • Für logisch zusammenhängende Projekte wird die Verwendung von GitLab Gruppen (Projekte und Gruppen > Gruppen) empfohlen. Innerhalb einer Gruppe ist die Anzahl der Projekte unbegrenzt.
  • Die maximale Größe eines Repository ist 2 GB (inklusive Git LFS Dateien). Auch diese Grenze kann in Einzelfällen durch einen Admin angepasst werden, sowohl auf Projekt- als auch auf Gruppenebene.
Sicherung (und Wiederherstellung) von Daten

Projekte und Daten in GitLab werden durch ein automatisches Backup-System gesichert. Dieses umfasst halbstündliche Backups der letzten 24 Stunden, sowie tägliche Backups der letzten 2 Wochen. Diese Backups sind aber in erster Linie für Notfälle vorgesehen, in denen das ganze System wiederhergestellt werden muss und dienen nicht dazu einzelne Projekte oder Dateien wiederherzustellen. Seien Sie vorsichtig beim Löschen von Daten oder Projekten!

Falls Sie Dateien in einem Projekt ungewollt gelöscht haben, denken Sie daran, dass sich diese immer noch in der Git-Historie befinden, falls diese Teil eines früheren Commits waren. Commits können stets rückgängig gemacht werden oder Sie können frühere Versionen einer Datei wieder auschecken. Sollten Sie ein Projekt auf GitLab fälschlicherweise gelöscht haben, kann es sein, dass Sie oder ein Kollege noch über eine lokale Kopie des Repository verfügen, um zumindest die Git Daten wiederherstellen zu können. Folgen Sie dazu den Anweisungen in Projekte und Gruppen > Projekte anlegen > Mit der Kommandozeile.

Auflösung von Nutzerkonten

Nutzerkontos von GitLab können auf verschiedene Weisen aufgelöst werden:

  • Nutzer können jederzeit freiwillig ihr internes GitLab-Konto löschen. Dazu sollte den Schritten Nutzerkonto löschen gefolgt werden.
  • Interne Nutzeraccounts, d.h. solche, die mit einem zentralen ITMZ Nutzeraccount verknüpft sind, werden automatisch zur Löschung vorgesehen, sobald der zugehörige zentrale ITMZ Nutzeraccount deaktiviert wird (beispielsweise bei Exmatrikulation von Studenten oder dem Auslaufen eines Arbeitsvertrags von Mitarbeitern). Ab diesem Zeitpunkt wird eine Frist von 60 Tagen gewährt, bevor der Account gelöscht wird.
  • Nutzer, die 90 Tage lang bei GitLab inaktiv sind, werden automatisch deaktiviert, können ihren Account durch einen herkömmlichen Login aber wieder aktivieren. Dabei bleiben alle personenbezogenen Daten erhalten.
    Externe Nutzeraccounts, d.h. solche, die manuell durch einen Admin erstellt wurden, werden nach diesen 90 Tagen über die Deaktivierung informiert. Sollten sie den Account nach weiteren 60 Tagen nicht reaktivieren, wird dieser automatisch gelöscht.
  • Die Zuständigen des IT- und Medienzentrums können ein Nutzerkonto löschen, wenn dessen Aktivitäten die Nutzungsbedingungen verletzt.

Mit dem Löschen eines Nutzeraccounts geht auch die Löschung der zugehörigen personenbezogenen Daten einher, inklusive aller Projekte und Git Repositorien, die dem Nutzer gehören. Ausgenommen sind Git-Daten, die durch Zusammenarbeit im Kontext von Projekten anderer Nutzer entstanden sind. Dort werden Name, E-Mail, sowie Datum und Uhrzeit jedes Abschnitts im Quellcode, ebenso wie der Quellcodeabschnitt selbst Bestandteil der Historie des Projekts. Im Allgemeinen ist es damit nicht möglich, die genannten Daten aus Projekten anderer Nutzer zu entfernen.

Sobald das letzte Mitglied einer Gruppe gelöscht wird, wird die Gruppe als verwaist angesehen und mitsamt allen zugehörigen Projekten ebenfalls gelöscht.

Wartung

Wir versuchen uns nach der GitLab Release Policy zu richten und planen monatliche Updates auf die neueste Version, nachdem diese auf dem Testsystem geprüft wurden. In der Zeit eines Updates wird der GitLab Dienst temporär nicht erreichbar sein. Die zugehörigen Wartungszeiträume werden eine Woche vorher angekündigt, sowohl auf der GitLab Website in der Kopfzeile, als auch auf den Infoseiten des ITMZ zu GitLab.

Gibt es spontane kritische Sicherheitsupdates oder Fehlerbehebungen, werden diese nach Bedarf, unter Umständen mit nur einer kurzen Vorlaufzeit, eingespielt.