GitLab - Nutzungshinweise

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

Anmeldung

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 IT- und Medienzentrum ist nicht notwendig. Nach erstmaliger Anmeldung wird ein internes GitLab Konto erstellt und mit dem Universitätskonto verknüpft.

Externe Personen können entweder ein Gastkonto für die Universität Rostock beantragen und dann den SSO-Zugang nutzen, oder sie stellen einen Antrag für einen separaten GitLab Nutzeraccount (siehe Wer hat Zugriff auf GitLab > Externe Nutzeraccounts). In letzterem Fall verläuft die Anmeldung über die herkömmliche Anmeldemaske auf der GitLab Website.

Arbeiten mit GitLab

Im Wesentlichen gibt es zwei Hauptwege, um mit GitLab arbeiten zu können: direkt im Browser auf der GitLab Website, oder über die Interaktion mit lokalen Git Repositorien.

Die Arbeit im Browser ist besonders anschaulich und komfortabel. Sie können beispielsweise Inhalte lesen, Tickets kommentieren, Wikiseiten editieren, und per Web Editor oder Web IDE auch Dateien in Projekten bearbeiten.

Für längerfristige und umfangreichere Arbeiten an Projekten empfiehlt sich die Arbeit an lokalen Kopien auf dem eigenen Computer. Hierzu wird die Git Clientsoftware benötigt, um Git Repositorien zu klonen und synchron zu halten. Die Software kann auf git-scm.com heruntergeladen werden. Die Website enthält auch Informationen zur Installation von Git unter allen gängigen Betriebssystemen.

Für die Kommunikation mit der GitLab Instanz muss man sich bei der Verwendung von Git explizit authentifizieren (siehe unten Authentifizierung in GitLab), entweder mittels persönlicher Zugriffstoken (über HTTPS) oder mithilfe von SSH-Schlüsseln.

Erste Schritte mit Git

Nach der Installation von Git sollte man eingangs ein paar globale Konfiguration setzen zum eigenen Namen und der eigenen Email-Adresse. Diese werden beim Arbeiten mit Git genutzt, um als Metadaten in der Versionshistorie hinterlegt zu werden. Außerdem kann man den initialen Arbeitszweig setzen. Dazu verwendet man die folgenden Befehle auf der Kommandozeile:

```

git config --global user.name "Max Mustermann"

git config --global user.email "max.mustermann@uni-rostock.de"

git config --global init.defaultBranch main

```

Der allgemeine Workflow in Git setzt sich in der Regel aus einer Kombination folgender Schritte und Git-Befehle zusammen:

  1. Ein Git Repository anlegen: `git init` oder `git clone`
  2. Die aktuellsten Änderungen vom Server holen: `git fetch` und `git pull`
  3. Falls notwendig: Den aktuellen Arbeitszweig wechseln, einen neuen anlegen oder bestimmte Branches zusammenführen: `git switch`, `git branch` oder `git merge`
  4. Dateiänderungen zum Index hinzufügen: `git add`
  5. Indizierte Änderungen zum lokalen Repository bestätigen (und kommentieren): `git commit`
  6. Neue Commits in das externe Repository hochladen: `git push`

Man muss mit Git aber nicht zwangsweise über die Kommandozeile arbeiten. Es gibt viele frei verfügbare Git GUI Clients, die eine grafische Benutzeroberfläche anbieten. Oft bieten bestimmte Editoren oder IDEs auch eine Git Integration an – manchmal durch die Installation eines Add-ons. Damit kann man direkt innerhalb des Editors die verschiedenen Git Funktionalitäten aufrufen.

Weiterführende Links zu Git sind im letzten Abschnitt (Weitere Hilfe) zu finden.

Authentifizierung in GitLab

Möchte man mit GitLab innerhalb des Browsers arbeiten, muss man sich nur auf der Website anmelden (siehe oben Anmeldung).

Für die externe Kommunikation mit der GitLab Instanz muss man sich stattdessen explizit authentifizieren, entweder mittels persönlicher Zugriffstoken oder mithilfe von SSH-Schlüsseln. Beide Methoden sind unabhängig von der initialen Anmeldung am System und müssen innerhalb des GitLab Nutzerkontos konfiguriert werden.

Generell wird der Einsatz persönlicher Zugriffstoken empfohlen, da diese universeller verwendbar sind. Herkömmliche Anwendungsszenarien sind die Authentifizierung für Git über HTTPS, sowie der Zugriff auf die Container Registry oder die GitLab API.

Alternativ kann man mit GitLab auch über eine SSH-Verbindung kommunizieren. Dabei werden die Daten über eine verschlüsselte Netzwerkverbindung (Secure Shell) übertragen. Dazu werden sogenannte SSH-Schlüssel benötigt. Das Einsatzgebiet beschränkt sich allerdings auf die Authentifizierung für Git über SSH. Aus Sicherheitsgründen ist eine SSH-Verbindung mit GitLab auf das Netz der Universität Rostock beschränkt.

Eine herkömmliche Passwort-Authentifikation für Git über HTTPS mit den Login-Daten des universitären Nutzerkontos ist nicht möglich, da sich Nutzer über den SSO der Universität Rostock bei GitLab anmelden. Das Passwort wird dabei nicht in GitLab hinterlegt. Stattdessen erstellt GitLab intern selbst ein automatisch generiertes Passwort aus Konsistenzgründen.

Persönliche Zugriffstoken

Ein persönliches Zugriffstoken (Personal Access Token) ist eine zufällig generierte Zeichenkette mit bestimmten Berechtigungen, die anstelle eines normalen Passworts verwendet wird. Es können mehrere Token mit unterschiedlichen Anwendungszwecken und Berechtigungen erzeugt werden.

Neben persönlichen Zugriffstoken gibt es auch solche für Projekte und Gruppen. Diese werden analog zu einem persönlichen Token benutzt, aber erlauben eine zusätzliche Berechtigungsbeschränkung auf einzelne Projekte oder Gruppen.

Zugriffstoken verwalten

Persönliche Zugriffstoken werden in der Weboberfläche von GitLab verwaltet. Man erreicht diese, in dem man oben links auf sein Profil klickt und anschließend Einstellungen > Zugriffstoken wählt.

Man erstellt ein neues Zugriffstoken über die Schaltfläche "Neuen Token hinzufügen":

  • Der Token-Name ist beliebig und dient später nur der eigenen Übersicht.
  • Das Ablaufdatum gibt an, wie lange das Token gültig sein soll. Die Voreinstellung ist 1 Monat. Die maximal zulässige Dauer ist 1 Jahr.
  • Dem Token können verschiedene Geltungsbereiche zugewiesen werden, je nach dem jeweiligen Einsatzzweck. Beispielsweise genügt write_repository für den Lese- und Schreibzugriff auf alle eigenen Git Repositorien.
  • Über die Schaltfläche "Persönliches Zugriffstoken erstellen" wird das Token final erstellt und die generierte Zeichenkette angezeigt, beispielsweise `aztGzZkCT-kGyRs1M6x1`.
    Achtung: Das Token muss nun extern gesichert werden, da es nach Verlassen der Seite nicht mehr angezeigt werden kann.

Die Übersicht aktiver Zugriffstoken zeigt die Namen, Geltungsbereiche und Ablaufdaten zuvor erstellter Token an, nicht aber die Token selbst. Man kann außerdem Token widerrufen/löschen, indem man in der Übersicht beim jeweiligen Token auf das Mülleimer-Symbol klickt.

Zugriff über HTTPS

Zur Authentifikation beim Zugriff über HTTPS nutzt man seinen eigenen Nutzernamen – das ist der Name hinter dem "@", wenn man in der Webübersicht auf seinen Avatar klickt und entspricht in der Regel dem Nutzerkürzel des zentralen ITMZ Nutzerkontos – und ein persönliches Zugriffstoken.

Möchte man mit Git auf eines seiner Projekte zugreifen, beispielsweise zum Klonen oder Synchronisieren, muss das Zugriffstoken mindestens den "write_repository" Geltungsbereich enthalten. In diesem Fall ist die HTTPS Git-URL des Projekts zu nutzen.

Anmeldeinformationen speichern - Git Credential Manager

Um nicht bei jedem Git Befehl den Nutzernamen und ein Token erneut einfügen zu müssen, kann man den Git Credential Helper einrichten.

Die Voraussetzung ist ein verschlüsselter Speicher, in dem die Anmeldeinformationen sicher abgespeichert werden können. Je nach Betriebssystem wird die Verschlüsselung von unterschiedlichen Hilfsprogrammen realisiert.

Bei Installation des offiziellen Git-Clients unter Windows oder macOS werden sichere Standardeinstellungen gesetzt, die den systemeigenen verschlüsselten Speicher nutzen. Hierzu ist generell keine manuelle Konfiguration nötig. Der Git Credential Manager kann aber auch manuell nachinstalliert werden. Für Linux ist eine zusätzliche Konfiguration nötig. Einsehen und ändern lässt sich das in Git hinterlegte Hilfsprogramm über `git config credential.helper`.

Zugriff über SSH

Anstatt sich mittels persönlicher Zugriffstoken über HTTPS zu authentifizieren, kann man mit GitLab auch über eine SSH-Verbindung kommunizieren. Die Daten werden dann über eine verschlüsselte Netzwerkverbindung (Secure Shell) übertragen. Dazu werden sogenannte SSH-Schlüssel (SSH Keys) benötigt. Aus Sicherheitsgründen ist eine SSH-Verbindung mit GitLab auf das Netz der Universität Rostock beschränkt. Nutzer können von unterwegs oder von zuhause also nur auf GitLab über SSH zugreifen, wenn der VPN-Zugang verwendet wird.

Wie funktioniert SSH?

SSH setzt mehrere Verschlüsselungs- und Authentifizierungstechniken ein, um sicherzustellen, dass nur autorisierte Teilnehmer miteinander kommunizieren. Vereinfacht gesagt verifiziert sich zuerst der SSH-Server (in diesem Fall GitLab) gegenüber dem Client, indem er ein Zertifikat sendet. Danach muss sich der Client gegenüber dem Server ausweisen. Dies kann unter Verwendung eines Schlüsselpaares, bestehend aus einem öffentlichen Schlüssel (Public Key) und einem privaten Schlüssel (Private Key), erfolgen.

Public Key und Private Key werden individuell auf dem eigenen Computer erzeugt. Der Private Key lässt sich optional mit einem Passwort absichern und sollte stets geheim gehalten werden. Der Public Key wird auf dem Server hinterlegt. Beim Aufbau einer SSH-Verbindung erstellt der Server dann ein kryptografisches Problem mittels dem Public Key und sendet dieses an den Client. Dieser wiederum entschlüsselt das Problem, was ausschließlich mit dem passenden Private Key möglich ist. Dadurch wird eine sichere Verbindung aufgebaut.

SSH-Schlüssel verwalten

Als Voraussetzung wird der OpenSSH Client benötigt, welcher auf den meisten Betriebssystemen aber bereits vorinstalliert ist.

In einer Kommandozeile lässt sich über den Befehl `ssh-keygen -t <TYPE> -b <BITS>` ein Schlüsselpaar erstellen, wobei sich die Art des Schlüssels und die Anzahl der zu verwendeten Bits spezifizieren lässt. Dann wird abgefragt, wo und unter welchem Namen das Schlüsselpaar gespeichert werden soll. Standardmäßig werden sie im Homeverzeichnis im Ordner `.ssh` abgelegt und erhalten die Namen `id_<TYPE>` (Private Key) und `id_<TYPE>.pub` (Public Key). Außerdem lässt sich optional ein Passwort zum Schutz des Private Key setzen. Alternativ lässt man die beiden Eingaben bei der Passphrase leer (nicht empfehlenswert). Entscheidet man sich für ein Passwort, kann man über die Verwendung des `ssh-agent` Tools nachdenken, um zu vermeiden, dass man das Passwort jedes Mal neu eingeben muss. Das Setup vom `ssh-agent` wird hier nicht behandelt.

Folgende SSH-Schlüssel werden auf dem GitLab der Universität Rostock unterstützt:

  • ED25519 ist erlaubt und Schlüssel haben eine feste Länge (`-b` flag wird ignoriert):
    ```
    ssh-keygen -t ed25519
    ```
  • RSA ist erlaubt, aber Schlüssel müssen mindestens 2048 bits lang sein (besser länger):
    ```
    ssh-keygen -t rsa -b 4096
    ```
  • DSA und ECDSA sind nicht erlaubt.

Der Public Key muss nun im Nutzerkonto von GitLab hinterlegt werden. SSH-Schlüssel in GitLab erreicht man, in dem man oben links auf sein Profil klickt und anschließend Einstellungen > SSH-Schlüssel wählt.

Man fügt einen neuen SSH-Schlüssel über die Schaltfläche "Add new key" hinzu:

  • Im Textfeld Schlüssel fügt man den Public Key ein, d.h. man kopiert den textuellen Inhalt der Datei `id_ed25519.pub`.
    Dieser sollte in etwa so aussehen:
    ```
    AAAAC3NzaC1lZDI1NTE5AAAAIL1LJAqv+Xazj2kaXZv2KhD78qjvbxH9hIX1Lyo6rqvE user@pc
    ```
  • Der Titel ist beliebig und dient später nur der eigenen Übersicht.
  • Bei Nutzungstyp können die Zugriffsrechte des Schlüssels gesetzt werden. Entweder zur Authentifizierung beim Projektzugriff oder zum Signieren von Git Commits.
  • Optional kann ein Ablaufdatum eingestellt werden.

Die Übersicht aktiver SSH-Schlüssel zeigt die Namen, Key Fingerprints, Nutzungstypen und Ablaufdaten zuvor hinterlegter SSH-Schlüssel an, nicht aber die Schlüssel selbst. Man kann außerdem Schlüssel widerrufen/löschen, indem man in der Übersicht beim jeweiligen Token auf das Mülleimer-Symbol klickt.

SSH-Verbindung mit GitLab überprüfen

Nachdem ein Schlüssel auf GitLab hinterlegt wurden, kann man überprüfen, ob eine SSH-Verbindung korrekt hergestellt werden kann. Dazu verwendet man folgenden Befehl auf der Kommandozeile:

```

ssh -T git@gitlab.uni-rostock.de

```

Ist das die erste Verbindung, erhält man vermutlich folgende Nachricht:

```

The authenticity of host 'gitlab.uni-rostock.de (139.30.22.169)' can't be established.

ED25519 key fingerprint is SHA256:hTAshNmqmCJ6qJV8iAQmDKMTvsWABJupjGLJ7UtpwcM. This key is not known by any other names

Are you sure you want to continue connecting (yes/no/[fingerprint])?

```

Anhand des Key Fingerprint, lässt sich die Authentizität des Servers überprüfen. Die SSH Key Fingerprints vom GitLab der Universität Rostock sind hier zu finden. Die Frage bei der Eingabe bestätigt man mit “yes”.

Hat alles korrekt funktioniert, erscheint eine Willkommensnachricht "Welcome to GitLab, @username!".

Projektzugriff über SSH

Beim Arbeiten mit einem Repository verwendet man die SSH Git-URL.

Die Eingabe eines Nutzernamens oder Zugriffstokens ist nicht notwendig. Wurde der private Schlüssel allerdings durch ein Passwort gesichert, muss dieses zur Authentifizierung eingegeben werden.

Projekte und Gruppen
Projekte anlegen

Neue Projekte können entweder direkt in der Weboberfläche von GitLab erstellt werden oder man verwendet die Kommandozeile um ein lokales Repository zu einem neuen GitLab Projekt hinzuzufügen.

In der Weboberfläche

Ein neues Projekt kann über die Schaltfläche "Neues Projekt/Repository", unter dem "+" Symbol im Seitenmenü, erstellt werden.

Bei einem leeren Projekt muss ein Projektname vergeben werden. Die Projekt-URL wird automatisch aus diesem Namen generiert, kann aber auch manuell angepasst werden. Außerdem muss eine Sichtbarkeitsstufe (siehe unten Sichtbarkeit von Projekten) gewählt werden. Weiterhin sollte das Projekt mit einer README Datei initialisiert werden, damit das Repository direkt geklont werden kann.

Anstelle eines leeren Projekts kann man auch aus verschiedenen Projekt-Vorlagen auswählen, um das Projekt mit passenden Dateien zu initialisieren. Dafür bietet GitLab integrierte Vorlagen für viele Programmiersprachen an.

Mit der Kommandozeile

Ein Projekt über die Kommandozeile mit Git zu erstellen ergibt Sinn, falls man bereits über ein lokales Repository verfügt und dieses in ein neues GitLab Projekt hinzufügen möchte.

Dafür verwendet man ein `git push`, um das lokale Repository zu GitLab hochzuladen. Gleichzeitig erzeugt GitLab das zugehörige Projekt in dem gewünschten Namensraum (z.B. als persönliches Projekt oder innerhalb einer Gruppe). Dabei ist zu beachten, dass diese Variante nicht für Projekte verwendet werden kann, deren Projekt-Pfade bereits existieren oder umbenannt wurden. Es müssen stets einzigartige Projekt-Pfade verwendet werden. Außerdem muss man über die nötigen Berechtigungen zum Hinzufügen neuer Projekte im jeweiligen Namensraum verfügen.

  • Sie haben noch kein lokales Projekt? Verwenden Sie alle Schritte (1) bis (7).
  • Sie haben ein lokales Projekt, aber es wird noch nicht mit Git verwaltet? Verwenden Sie die Schritte (2), (3), (5), (6), (7).
  • Sie haben ein lokales Git Repository? Verwenden Sie die Schritte (2), (6), (7).

Für das Beispiel fügen wir ein neues persönliches Projekt mit dem Namen `project_name` für den Account `user_name` hinzu. In der Praxis müssen diese Platzhalter entsprechend ersetzt werden.

  1. Ordner für das Projekt erstellen:
    ```
    mkdir project_name
    ```
  2. Ordner für das Projekt betreten:
    ```
    cd project_name
    ```
  3. Git Repository initialisieren:
    ```
    git init
    ```
  4. Einige Dateien anlegen:
    ```
    echo 'Project Name' > README.md
    ```
  5. Die Dateien dem Git Repository hinzufügen:
    ```
    git add .
    git commit -m "Initial commit"
    ```
  6. Das externe Repository festlegen:
  7. Projekt zu GitLab senden:
    ```
    git push -u origin main
    ```
Projekte klonen

Zum Klonen des Projekts wird die Git-URL benötigt, welche man unter der Schaltfläche “Code” in der Projektübersicht findet und dort kopieren kann. Je nach Art der Authentifizierung, die man verwenden möchte, wählt man HTTPS oder SSH.

Auf der Kommandozeile navigiert man nun zum gewünschten Speicherort des Projekts und gibt `git clone`, gefolgt von der jeweiligen Git-URL, ein und authentifiziert sich. In diesem Fall wählen wir HTTPS und würden uns mittels eines persönlichen Zugriffstokens authentifizieren. Danach lässt sich lokal mit dem Repository arbeiten.

```

git clone gitlab.uni-rostock.de/namespace/project.git

```

Migration von Projekten

Bereits existierende Projekte können in GitLab importiert werden. Dafür stehen mehrere Möglichkeiten zur Auswahl. Man kann entweder die Import/Export-Funktionalität zur Migration von Projekten zwischen verschiedenen GitLab Instanzen nutzen, Projekte von GitHub importieren, oder ein beliebiges Git Repository direkt über die Git-URL importieren.

Import/Export über GitLab

Projekte in GitLab können als Archiv exportiert und anschließend in einer anderen GitLab Instanz importiert werden. Bei dieser Variante werden viele, aber nicht alle Metadaten eines Projekts übernommen.

Der Projekt-Export ist in den allgemeinen Projekteinstellungen zu finden. Dazu öffnet man das gewünschte Projekt und wählt "Einstellungen > Allgemein" im Seitenmenü. Anschließend öffnet man das Untermenü "Erweitert" und wählt die Schaltfläche "Projekt exportieren". Sobald der Export generiert wurde, erhält man eine Email mit dem Download-Link zum Archiv, welcher 24 Stunden gültig ist. Alternativ kann man die Website der Projekteinstellungen erneut aufrufen, wo nun eine neue Schaltfläche "Export herunterladen" verfügbar sein sollte.

Für den Projekt-Import wählt man bei der Erstellung eines neuen Projektes die Variante "Projekt importieren" und anschließend "GitLab-Export".

Hier gibt man dem Projekt einen Namen und kann optional die Projekt-URL anpassen. Über die Schaltfläche "Choose File" wählt man das gewünschte Archiv zum Importieren aus. Es wird nur das Format `.tar.gz` unterstützt. Letztlich startet man den Import-Prozess mit der Schaltfläche "Projekt importieren".

Import von GitHub

Mit dieser Methode können Projekte von github.com importiert werden. Möchte man Projekte von einer anderen GitHub Instanz importieren, muss stattdessen die GitLab API verwendet werden. Neben dem Git Repository selbst, werden eine Menge an Metadaten mit importiert.

Bei der Erstellung eines neuen Projekts wählt man "Projekt importieren" und anschließend "GitHub".

Nun muss man sich mit einem persönlichen GitHub Zugriffstoken authentifizieren, welches man zuvor auf GitHub generiert hat. Anschließend kann man aus allen Projekten auswählen, auf die der Account Zugriff hat. Es lassen sich einzelne Projekte importieren über die Schaltfläche "Importieren" hinter jedem Projekt, oder man importiert mehrere Projekte auf einmal mit der Schaltfläche "X Repositorys importieren", nachdem man diese gegebenenfalls nach Namen oder Zugehörigkeit gefiltert hat. Außerdem kann man kann auch den Namensraum und Projektnamen vor dem Import anpassen.

Um ein anderes Zugriffstoken für GitHub zu verwenden, kann man sich entweder aus GitLab aus- und wieder einloggen, oder man widerruft das alte Token auf GitHub.

Import über Git-URL

Bei dieser Variante wird ausschließlich das Git Repository importiert. Andere Projektdaten wie Tickets oder Merge Requests können nicht importiert werden.

Bei der Erstellung eines neuen Projekts wählt man “Projekt importieren” und anschließend “Repository nach URL”.

 

Hier fügt man die Git-URL des bestehenden Repository ein. Falls es sich nicht um ein öffentliches Repository handelt, muss man zugehörige Daten zur Authentifizierung eingeben. Des Weiteren vergibt man einen Projektnamen und kann optional die Projekt-URL, Beschreibung oder das Sichtbarkeitslevel anpassen. Über die Schaltfläche "Projekt anlegen" startet man den Import-Prozess.

Sichtbarkeit von Projekten

Jedes Projekt gehört einer der Sichtbarkeitsstufen privat, intern oder öffentlich an, die angibt, welcher Personenkreis das Projekt einsehen und klonen kann:

  • Private Projekte sind nur für die Mitglieder des Projekts einsehbar.
  • Interne Projekte sind für alle Personen mit einem GitLab Nutzerkonto einsehbar, die angemeldet sind. Dies umfasst alle Personen mit einem gültigen zentralen ITMZ Nutzungskonto. Ausgenommen sind externe Personen, für die zu Kollaborationszwecken manuell ein GitLab Account angelegt wurde.
  • Öffentliche Projekte sind für alle Personen einsehbar, selbst externe Nutzer oder solche ohne Nutzerkonto.

Sichtbarkeitsstufen haben keine Auswirkung auf die Sichtbarkeit von direkten Mitgliedern innerhalb eines Projekts. Projektmitglieder können stets alle anderen Mitglieder einsehen und wer diese eingeladen hat. Nur Nutzer mit der Rolle "Owner" können die Sichtbarkeitsstufe eines Projekts ändern (siehe unten Nutzerrollen in Projekten).

Um die Sichtbarkeitsstufe eines Projekts zu ändern, öffnet man das gewünschte Projekt und wählt "Einstellungen > Allgemein" im Seitenmenü. Anschließend öffnet man das Untermenü "Sichtbarkeit, Funktionen, Berechtigungen" und kann dort die Projekt-Sichtbarkeit setzen. Außerdem können hier einzelne Feature des Projekts ein- und ausgeschaltet werden.

Nutzerrollen in Projekten

Beim Hinzufügen von Projektmitgliedern müssen bestimmte Rollen zugewiesen werden. Die Rolle bestimmt, welche Berechtigungen ein Nutzer hat. Die Rollen Guest, Reporter, Developer, Maintainer und Owner sind gestaffelt, beinhalten immer alle Berechtigungen der vorigen Rolle und erweitern diese um weitere Funktionalitäten:

  • Die Guest-Rolle ist für nicht-aktive Mitglieder, die einige Inhalte lesen sowie Tickets öffnen und kommentieren können.

    Projektmitglieder in der Guest-Rolle können das Projekt herunterladen, Kommentare einbringen, Projektdateien ansehen und Git-pullen, Wikiseiten ansehen, neue Tickets erstellen, verwandte Tickets ansehen, vertrauliche Tickets erstellen, und selbsterstellte vertrauliche Tickets ansehen. Wenn öffentliche Pipelines in den Projekteinstellungen > CI/CD aktiviert sind, können sie zusätzlich eine Liste der Jobs anschauen, ein Job-Protokoll ansehen, und Job-Artefakte durchsehen und herunterladen.
     
  • Die Reporter-Rolle ist für Mitglieder, die mehr Einblick bekommen und im Ticketsystem arbeiten können.

    Reporter haben folgende zusätzliche Berechtigungen im Vergleich zu Guest: Im Ticketsystem können Reporter Tickets zuweisen und mit Labels versehen, Kommentare sperren, und die Ticketliste und Labels verwalten. Reporter können außerdem Codeausschnitte speichern, den Status eines Commits einsehen, die Container Registry und Umgebungen ansehen, eine Liste von Merge Requests ansehen, Projekt-Statistiken ansehen, und die Error Tracking Liste ansehen.
     
  • Die Developer-Rolle ist für Projektmitglieder, die aktiv beitragen und allen nötigen Zugriff haben, um im Repository zu arbeiten, solange etwas nicht explizit beschränkt wurde (z.B. durch Branch-Protection).

    Developer haben folgende zusätzliche Berechtigungen im Vergleich zu Reporter: Im Repository können Developer neue Branches anlegen, und auf nicht-schreibgeschützte Branches pushen, oder diese löschen. Sie können neue Merge Requests anlegen, bestehende verwalten/akzeptieren, sie anderen zuweisen und mit Labels versehen, und deren Kommentarverlauf sperren. Sie können neue Umgebungen anlegen und diese stoppen. Zusätzlich können Developer Jobs abbrechen und neu starten, und den Commit-Status anlegen oder aktualisieren. Sie können die Container Registry aktualisieren, oder ein Image in der Container Registry löschen. Im Ticketsystem können sie Meilensteine anlegen, bearbeiten, und löschen, und Label hinzufügen. Sie können Änderungsvorschläge annehmen, Wikiseiten anlegen und bearbeiten, und Git-Tags überschreiben/löschen.
     
  • Die Maintainer-Rolle ist für Mitglieder, die ein Projekt und dessen Mitglieder verwalten.

    Maintainer haben folgende zusätzliche Berechtigungen im Vergleich zu Developer: Maintainer können neue Projektmitglieder hinzufügen, Umgebungs-Terminals verwenden, Branch-Schreibschutz ein-/ausschalten, auf schreibgeschützte Branches pushen, den Schreibschutz für push durch Developer an-/ausschalten sowie den Schreibschutz von Tags an/ausschalten. Maintainer können die Projekteinstellungen bearbeiten, Deploy-Schlüssel zu dem Projekt hinzufügen, und Projekt-Hooks konfigurieren. Sie können GitLab Runners verwalten, Job-Trigger verwalten, und Umgebungs-Variablen verwalten. Falls GitLab Pages aktiviert sind, können sie diese verwalten und löschen, und deren Domains und Zertifikate verwalten. Sie können Cluster verwalten, Kommentare von beliebigen Nutzern bearbeiten, das Error Tracking verwalten, und Wikiseiten löschen.
     
  • Nutzer in der Owner-Rolle kontrollieren alle Aspekte eines Projekts, inklusive dessen Löschung. In persönlichen Projekten (im Namensraum eines Nutzerkontos) hat ausschließlich diese Person die Owner-Rolle. Beachten Sie, dass alle Nutzer mit der Owner-Rolle für den Inhalt ihrer Projekte verantwortlich sind, auch wenn diese von anderen Personen stammen.

    Owner haben folgende zusätzliche Berechtigungen im Vergleich zu Maintainer: Owner können die Sichtbarkeitsstufe des Projekts ändern, das Projekt in einen anderen Namensraum transferieren, das Projekt löschen, Tickets löschen, und Benachrichtigungs-Emails ausschalten.

Eine detaillierte Übersicht aller Rollenberechtigungen in Projekten ist in der offiziellen Dokumentation aufgeführt.

Projekte löschen

Ein Projekt kann in den erweiterten Projekteinstellungen gelöscht werden. Dazu öffnet man das gewünschte Projekt und wählt "Einstellungen > Allgemein" im Seitenmenü. Anschließend öffnet man das Untermenü "Erweitert" und wählt ganz unten die Schaltfläche "Projekt löschen". Zur Bestätigung des Löschvorgangs ist die Projekt-URL einzugeben. Nur Nutzer mit der Rolle Owner können Projekte löschen.

Projektmitglieder verwalten

Projektmitglieder lassen sich über die Projektansicht "Verwalten > Mitglieder" im Seitenmenü eines Projekts verwalten. Hier lassen sich neue Mitglieder einladen, Rollenberechtigungen verteilen und Mitglieder entfernen. Ausschließlich Projektmitglieder der Rollen Maintainer oder Owner können Projektmitglieder verwalten. Außerdem kann ein Maintainer keine Änderungen der Rolle Owner durchführen.

Zum Hinzufügen von Einzelpersonen wählt man die Schaltfläche "Mitglieder einladen". Unter "Username or name" lässt sich nach Nutzern innerhalb von GitLab suchen. Es ist zu beachten, dass Mitglieder nicht über die Email-Adresse eingeladen werden können, da GitLab-Accounts intern über das universitäre Nutzerkürzel verknüpft sind. Des Weiteren muss sich ein Nutzer mindestens einmal vorher bei GitLab eingeloggt haben, damit der zugehörige Account erstellt und somit auffindbar ist. Beim Einladen muss dem Nutzer eine Rolle (siehe oben Nutzerrollen in Projekten) zugewiesen werden. Optional lässt sich der Zugriff auch zeitlich beschränken. Über die Schaltfläche "Einladen" wird der Nutzer Mitglied des Projekts.

Alternativ lassen sich auch die direkten Mitglieder eines anderen Projekts importieren, über die Schaltfläche "Aus einem Projekt importieren". Dabei werden die ursprünglich vergebenen Rollen beibehalten.

Eine weitere Möglichkeit ist, eine ganze Gruppe (siehe unten Gruppen) als Projektmitglied hinzuzufügen, über die Schaltfläche "Gruppe einladen". Man vergibt der Gruppe eine maximale Rolle und optional ein Ablaufdatum des Zugriffs. Die eigentlichen Rollen der Gruppenmitglieder im Projekt übertragen sich dabei aus den Rollen in der Gruppe. Wird beispielsweise eine Gruppe als Maintainer eingeladen, aber ein Gruppenmitglied hat innerhalb der Gruppe nur die Rolle Guest, so behält diese Person die Rolle Guest auch im Projekt.

Handelt es sich um ein internes oder öffentliches Projekt, haben Nutzer die Möglichkeit selbst Zugriff auf das Projekt anzufragen. Dazu öffnet man das Aktionsmenü (3 Punkte) in der Projektübersicht und wählt "Zugriff anfragen". Damit wird eine Email-Anfrage an aktive Projektmitglieder der Rollen Maintainer und Owner gesendet, welche die Anfrage an- oder ablehnen können. Diese Funktionalität kann in den allgemeinen Projekteinstellungen unter "Sichtbarkeit, Funktionen, Berechtigungen > Projekt-Sichtbarkeit > Benutzer(innen) können Zugriff anfordern" umgestellt werden.

Zum Entfernen von Projektmitgliedern öffnet man die Mitgliederübersicht. Neben dem jeweiligen Mitglied öffnet man das Aktionsmenü (3 Punkte) und wählt "Mitglied entfernen". An dieser Stelle kann man den Nutzer optional auch von allen zugehörigen Tickets und Merge Requests entfernen.

Weiterführende Informationen zur Verwaltung von Projekten sind der offiziellen Dokumentation zu entnehmen.

Gruppen

GitLab Gruppen können genutzt werden, um mehrere Projekte und Personen zu organisieren. Mitglieder einer Gruppe haben Zugriff auf alle Projekte innerhalb der Gruppe und die Zugriffsrechte können zentral über die Gruppe verwaltet werden. Außerdem können Untergruppen erstellt werden.

Sichtbarkeit und Rollen in Gruppen

Analog zur Sichtbarkeit von Projekten (siehe oben Sichtbarkeit von Projekten), können Gruppen privat, intern oder öffentlich sein, mit den daraus resultierenden Zugriffsrechten. Die Sichtbarkeitsstufe der Gruppe vererbt sich standardmäßig auf alle Gruppenprojekte, kann aber auch individuell gesetzt werden, wobei ein Gruppenprojekt nie eine höhere Sichtbarkeitsstufe haben kann als die übergeordnete Gruppe.

Ebenso ist die Rollenvergabe bei Gruppen analog zu der in Projekten strukturiert. Es gibt in gestaffelter Reihenfolge, mit zunehmenden Zugriffsrechten: Guest, Reporter, Developer, Maintainer und Owner:

  • Guests können eine Gruppe nur einsehen, aber nichts verändern.
  • Reporter können zusätzlich die Gruppen-Label verwalten.
  • Developer können zusätzlich Projekte in der Gruppe anlegen sowie Meilensteine der Gruppe verwalten.
  • Maintainer können zusätzlich Untergruppen anlegen.
  • Owners können zusätzlich die Gruppeneinstellungen ändern, Gruppenmitglieder verwalten, die Gruppe löschen, die Audit Events der Gruppe einsehen und Benachrichtigungs-Emails ausschalten.

Eine detaillierte Übersicht aller Rollenberechtigungen in Gruppen ist in der offiziellen Dokumentation aufgeführt.

Die Gruppenrolle eines Mitglieds vererbt sich automatisch auf die Rolle innerhalb aller Gruppenprojekte, kann jedoch auch projektspezifisch gesetzt werden. Außerdem können einzelne Nutzer auch von außerhalb der Gruppe als Projektmitglied zu individuellen Gruppenprojekten hinzugefügt werden.

Gruppen verwalten

Eine neue Gruppe kann über die Schaltfläche "Neue Gruppe", unter dem "+" Symbol im Seitenmenü, erstellt werden.

Bei einer neuen Gruppe muss ein Gruppenname vergeben werden. Die Gruppen-URL wird automatisch aus diesem Namen generiert, kann aber auch manuell angepasst werden. Außerdem muss eine Sichtbarkeitsstufe gewählt werden.

Achtung: Das Einladen von Gruppenmitgliedern über Email beim Erstellen der Gruppe wird nicht unterstützt. Stattdessen sollte die Gruppe zunächst ohne Mitglieder erstellt werden. Anschließend können Nutzer über die Gruppenverwaltung eingeladen werden.

Gruppenmitglieder lassen sich über die Gruppenansicht "Verwalten > Mitglieder" im Seitenmenü einer Gruppe verwalten. Hier lassen sich neue Mitglieder einladen, Rollenberechtigungen verteilen und Mitglieder entfernen. Ausschließlich Gruppenmitglieder der Rolle Owner können Gruppenmitglieder verwalten.

Zum Hinzufügen von Einzelpersonen wählt man die Schaltfläche "Mitglieder einladen". Unter "Username or name" lässt sich nach Nutzern innerhalb von GitLab suchen. Es ist zu beachten, dass Mitglieder nicht über die Email-Adresse eingeladen werden können, da GitLab-Accounts intern über das universitäre Nutzerkürzel verknüpft sind. Des Weiteren muss sich ein Nutzer mindestens einmal vorher bei GitLab eingeloggt haben, damit der zugehörige Account erstellt und somit auffindbar ist. Beim Einladen muss dem Nutzer eine Rolle (siehe oben Sichtbarkeit und Rollen in Gruppen) zugewiesen werden. Optional lässt sich der Zugriff auch zeitlich beschränken. Über die Schaltfläche "Einladen" wird der Nutzer Mitglied des Projekts.

Eine weitere Möglichkeit ist, eine ganze Gruppe als Gruppenmitglied hinzuzufügen, über die Schaltfläche "Gruppe einladen". Man vergibt der Gruppe eine maximale Rolle und optional ein Ablaufdatum des Zugriffs. Die eigentlichen Rollen der neu hinzugefügten Gruppenmitglieder übertragen sich dabei aus den Rollen in der ursprünglichen Gruppe. Wird beispielsweise eine Gruppe als Maintainer eingeladen, aber ein Gruppenmitglied hat innerhalb der ursprünglichen Gruppe nur die Rolle Guest, so behält diese Person die Rolle Guest bei.

Handelt es sich um eine interne oder öffentliche Gruppe, haben Nutzer die Möglichkeit selbst Zugriff auf die Gruppe anzufragen. Dazu öffnet man das Aktionsmenü (3 Punkte) in der Gruppenübersicht und wählt "Zugriff anfragen". Damit wird eine Email-Anfrage an aktive Gruppenmitglieder der Rolle Owner gesendet, welche die Anfrage an- oder ablehnen können. Diese Funktionalität kann in den allgemeinen Gruppeneinstellungen unter "Berechtigungen und Gruppenfunktionen > Mitgliedschaft > Benutzer(innen) können Zugriff anfordern" umgestellt werden.

Zum Entfernen von Gruppenmitgliedern öffnet man die Mitgliederübersicht. Neben dem jeweiligen Mitglied öffnet man das Aktionsmenü (3 Punkte) und wählt "Mitglied entfernen". An dieser Stelle kann man den Nutzer optional auch von allen zugehörigen Untergruppen, Projekten, Tickets und Merge Requests entfernen.

Weiterführende Informationen zum Umgang mit Gruppen sind der offiziellen Dokumentation zu entnehmen.

Umgang mit Binärdateien und großen Projekten

Git ist für die effiziente Versionsverwaltung von textbasierten Inhalten konzipiert, indem Dateiveränderungen in einer Historie gespeichert werden. Dabei können Änderungen an Textdateien zeilenweise nachvollzogen und einem konkreten Nutzer zugeschrieben werden. Hierbei speichert Git nur die veränderten Zeilen, um möglichst platzsparend auch eine lange Historie verwalten zu können.

Bei Binärdateien (z.B. Bilder, Videos, Archive, Office-Dateien, usw.) sind die Daten nicht als Textzeilen abgespeichert. Git muss deswegen bei Änderungen die gesamte Datei in der Historie speichern – selbst wenn sich in einem Bild nur ein Pixel geändert hat! Das kann dazu führen, dass Binärdateien die Größe eines Repository schnell anwachsen lassen und gleichzeitig die Performance vom Repository beeinträchtigen. Generell sollten derartige Dateien möglichst nicht über Git verwaltet werden, insbesondere wenn die Dateien groß sind. Sind Binärdateien dennoch essenzieller Teil eines Projekts und handelt es sich bei ihnen nicht nur um ein paar wenige kleine Dateien, sollten diese über Git LFS (siehe unten Git Large File Storage) verwaltet werden.

Generell sollte man versuchen, Git Repositorien relativ kleinzuhalten, um einen performanten Betrieb von Git zu gewährleisten. Wird ein Projekt doch einmal zu groß und muss dementsprechend manuell verkleinert werden, ist dies mit einem erheblichen Aufwand verbunden. Der Grund dafür ist, dass das Löschen von Daten aus der Historie sehr umständlich ist, da Git eine konsistente Historie und Datenintegrität gewährleisten möchte.

Von Git verwaltete Dateien konfigurieren

Oft werden Binärdateien innerhalb eines Projekts automatisch generiert (z.B. Compiler-Zwischenergebnisse, kompilierte Endprodukte, usw.), die man nicht versionieren muss. In der Praxis lässt sich Git so konfigurieren, dass die entsprechenden Dateien von Git ignoriert werden. Dazu kann eine Textdatei `.gitignore` im Hauptverzeichnis des Repository erstellt werden, in der eingetragen wird, welche Ordner oder Dateien ignoriert werden sollen. Dabei kann auch mit Wildcards (*) gearbeitet werden. Die `.gitignore` selbst sollte dabei immer mit versioniert werden.

Verwaltet man beispielsweise ein TeX-Projekt mit Git, arbeitet man in erste Linie mit `.tex` Dateien als Quelltexte für das TeX-Dokument. Beim Kompilieren des finalen `.pdf` Dokuments, entstehen Nebenprodukte mit den Dateiendungen `.log`, `.out`, `.aux`, `.toc` und `.idx`. Diese Dateien sollten nicht mit ins Repository, da sie bei jedem Bauprozess neu generiert werden.

Eine rudimentäre `.gitignore` könnte wie folgt aussehen:

```

*.log

*.out

*.aux

*.toc

*.idx

```

Es gibt ein öffentliches GitHub Repository, in dem eine Sammlung vieler nützlicher `.gitignore` Vorlagen zusammengetragen wurde. Man findet hier viele verschiedene Programmiersprachen und Frameworks, unter anderem auch eine ausführliche Vorlage für TeX.

Git Large File Storage (Git LFS)

Für erläuternde Informationen und eine Einführung in Git LFS wird auf folgendes GitLab Repository verwiesen.

Speicherplatz reduzieren

Falls ein Projekt große oder eine hohe Anzahl an Dateien enthält, kann das zugehörige Git Repository sehr groß werden. Das hat negative Auswirkungen auf die Git Performance, den verfügbaren Speicherplatz und die generelle Serverauslastung. Insbesondere wenn mit Binärdateien gearbeitet wird, aber vergessen wurde Git LFS einzurichten, kann es vorkommen, dass die Größe eines Projekts reduziert werden muss. Als Faustregel gilt: Ist das Repository größer als 1 GB ohne Git LFS, sollte die Größe reduziert werden.

Die Größe eines Projekts kann oben auf der Projektseite in GitLab abgelesen werden (Projektspeicher). Der Wert zeigt die Gesamtgröße des Projekts, einschließlich der Artefakte, LFS, Pakete, Code-Schnipsel und Wiki an. Über einen Klick auf den Text Projektspeicher kann eine detaillierte Übersicht aufgerufen werden. Bitte beachten Sie, dass die Werte zwischengespeichert werden und daher möglicherweise nicht sofort die tatsächliche Größe widerspiegeln, kurz nachdem Änderungen im Projekt vorgenommen wurden.

Leider reicht es nicht einfach aus, bestimmte Dateien im Projektverzeichnis zu löschen. Das verringert die Größe des Repository nicht, da die alten Versionen der Dateien immer noch in der Historie von Git verwaltet werden. Im Folgenden werden einige Varianten vorgestellt, wie sich die Projektgröße dennoch reduzieren lässt. Mit steigendem Aufwand können dabei mehr Informationen des Projekts erhalten werden.

Variante 1: Neues Projekt ohne Historie (einfach)

Die einfachste Möglichkeit ist ein neues Projekt zu erstellen, nicht mehr benötigte Dateien zu löschen und sicherzustellen, dass Binärdateien über Git LFS verwaltet werden.

Achtung: Diese Variante erhält nicht die Historie der Dateien (inklusive Commit Nachrichten und Branches), sondern ausschließlich den aktuellen Stand des Repository. Außerdem gehen alle weiteren GitLab-spezifischen Daten verloren, wie z.B. Tickets, Wiki und Code-Schnipsel.

  1. Ein neues leeres Projekt auf GitLab anlegen.
  2. Das Projekt lokal klonen:
    ```
    git clone gitlab.uni-rostock.de/username/new-project-with-lfs.git
    ```
  3. Alle relevanten Dateien vom alten Projekt ins neue Projekt kopieren (ohne das `.git/` Verzeichnis).
  4. Git LFS initialisieren und Binärdateien verwalten lassen:
    ```
    git lfs install
    git lfs track '*.jpg'
    git lfs track '*.zip'
    git lfs track 'my_binary_data_file'
    ... additional git lfs track commands
    ```
  5. Das GitLab Repository updaten:
    ```
    git add .
    git commit -m "Initial commit"
    git push
    ```
  6. Wenn alles geklappt hat und der gewünschte Stand im neuen Projekt vorhanden ist, kann das alte Projekt gelöscht werden.

Variante 2: Neues Projekt mit veränderter Historie (fortgeschritten)

In dieser komplexeren Variante wird auch ein neues Projekt erstellt, aber die Historie des alten Repository in verändertem Zustand mit übernommen. Dazu werden Werkzeugen wie git-filter-repo oder BFG Repo-Cleaner genutzt.

Der Vorteil ist, dass Textdateien mit ihrer gesamten Historie erhalten werden können, während alte Versionen großer Binärdateien gelöscht werden. Die exakte Vorgehensweise hängt von der Projektstruktur ab. Nutzer:innen, die diese Variante verfolgen wollen, sollten sich vorher mit den Befehlen und der Funktionsweise der Tools auseinandersetzen. Im Folgenden wird ein Beispiel gezeigt, wie das Vorgehen aussehen könnte.

Achtung:  Diese Variante erhält nur die veränderte Historie des Repository. GitLab-spezifische Daten, wie z.b. Tickets, Wiki und Code-Schnipsel, gehen verloren.

  1. Ein neues leeres Projekt auf GitLab anlegen.
  2. Das alte Repository in neues Verzeichnis klonen mit der Option `--mirror`:
    ```
    git clone --mirror gitlab.uni-rostock.de/username/the-big-project.git
    ```
    Hinweis: Falls das Projekt bereits Git LFS Dateien enthält, werden diese hier nicht mit geklont und müssen in Schritt 6 manuell hinzugefügt werden.
  3. Ausgewählte Binärdateien und Verzeichnisse mit `git-filter-repo` oder `bfg` löschen. In diesem Beispiel werden sowohl `.jpg` und `.zip` Dateien aus der Historie gelöscht als auch das `data/` Verzeichnis:
    ```
    cd the-big-project
    git-filter-repo --use-base-name --path-glob '*.jpg' --path-glob '*.zip' --invert-paths
    git-filter-repo --path data/ --invert-paths
    ```
  4. Das modifizierte Repository ins neu angelegte Projekt hochladen:
    ```
    git push --mirror gitlab.uni-rostock.de/username/new-project-with-lfs.git
    ```
  5. Das neue Repository in ein neues Verzeichnis klonen (ohne die Option `--mirror`):
    ```
    cd ..
    git clone gitlab.uni-rostock.de/username/new-project-with-lfs.git
    cd new-project-with-lfs
    ```
  6. Ausgewählte Binärdateien und Verzeichnisse vom alten ins neue Repository kopieren (ohne das `.git/` Verzeichnis und Dateien, die bereits im neuen Repository vorliegen).
  7. Git LFS initialisieren und Binärdateien verwalten lassen:
    ```
    git lfs install
    git lfs track '*.jpg'
    git lfs track '*.zip'
    git lfs track 'my_binary_data_file'
    ... additional git lfs track commands
    ```
    Hinweis: Falls mehrere Branches im Repository existieren, muss Git LFS in allen Branches korrekt initialisiert werden.
  8. Das GitLab Repository updaten:
    ```
    git add .
    git commit -m "Adds some data files"
    git push
    ```
  9. Wenn alles geklappt hat und der gewünschte Stand im neuen Projekt vorhanden ist, kann das alte Projekt gelöscht werden.

Variante 3: Projekt erhalten und Repository Historie umschreiben (schwierig)

In der offiziellen GitLab Dokumentation wird eine Variante beschrieben, bei der das ursprüngliche Projekt erhalten bleibt (inklusive der GitLab-spezifischen Daten) und gleichzeitig die Repository Historie umgeschrieben wird. Dieses Vorgehen ist recht umfangreich und kompliziert, aber gut dokumentiert.

Es ist wichtig, dass nach Änderung des Projekts alle Projektmitglieder ihre lokalen Kopien des Repository löschen und neu klonen. Andernfalls wird die alte Historie beim nächsten Synchronisieren wieder hochgeladen.

GitLab Funktionalitäten

GitLab bietet viele Tools, die das kollaborative Arbeiten an Projekten vereinfachen. Im Folgenden werden exemplarisch einige der Kernfunktionen erwähnt. Die meisten Features sind in allen Projekten standardmäßig aktiviert, mit Ausnahme von CI/CD und der Container Registry. Um bestimmte Features aus- oder einzuschalten, öffnet man die allgemeinen Projekteinstellungen und öffnet das Untermenü "Sichtbarkeit, Funktionen, Berechtigungen".

Issues

Über Issues wird in GitLab ein Ticket-System realisiert. Es kann genutzt werden, um Ideen zu diskutieren, um Aufgaben und Arbeitsfortschritte zu organisieren, oder um Support und Bug Reports zu verwalten.

Wiki

GitLab unterstützt projektspezifische Wikiseiten, über die Projekte dokumentiert werden können, falls man die Dokumentation nicht als Teil des Repository ablegen möchte.

Continuous Integration / Continuous Delivery (CI/CD)

Mit GitLab CI/CD können unterschiedliche Workflows automatisiert werden. Beispielsweise können wiederkehrende Arbeitsprozesse in der Softwareentwicklung kontinuierlich automatisiert werden – von Integration und Tests bis hin zu Überwachung und Bereitstellung.

Die Workflows werden in GitLab über sogenannte Pipelines abgebildet, welche sich aus Jobs und Stages zusammensetzen. Jobs definieren, welche Arbeitsschritte ausgeführt werden sollen und Stages strukturieren einen oder mehrere Jobs in aufeinanderfolgende Abschnitte.

Die einzelnen Jobs werden beim Ausführen der Pipeline dann von Agenten ausgeführt, welche sich GitLab Runners nennen. Sowohl Runner als auch Jobs können mit sogenannten Tags assoziiert werden, damit ein Job weiß welcher Runner ihn ausführen soll.

Das ITMZ stellt einen generischen instanzweiten Runner zur Verfügung, der für alle Nutzer zugänglich ist. Der Runner ist als Docker Executor konfiguriert und verarbeitet Jobs ohne Tags. Derzeit gibt es für Nutzer kein CI/CD Rechenlimit.

Bei spezifischeren Anforderungen an einen Runner steht es Nutzern frei, eigene Runner aufzusetzen und diese im Kontext einer Gruppe oder eines Projektes zu betreiben. Dafür gibt es ein offizielles Tutorial.

Container Registry

GitLab hat eine integrierte Container Registry, die es ermöglicht, Container Images (z.B. Docker) für jedes Projekt zu speichern. Dieses Feature ist standardmäßig deaktiviert, kann aber über die allgemeinen Projekteinstellungen aktiviert werden.

Durch die Verwendung der Container Registry kann die Größe eines Projektes mit der Zeit stark ansteigen. Nutzer sind deshalb angehalten eine Bereinigungsrichtlinie (Cleanup Policy) zu definieren, welche automatisch alte, überflüssige Images und Tags entfernt. Die Bereinigungsrichtlinie lässt sich in den Projekteinstellungen unter Pakete und Registrierungen > Bereinigungsrichtlinien verwalten.

Git Large File Storage (LFS)

Zum Verwalten (großer) Binärdaten innerhalb eines Repository empfiehlt sich die Verwendung von Git LFS. Weitere Informationen sind im Abschnitt zum Umgang mit Binärdateien und großen Projekten (siehe oben) zu finden.

Nutzerkonto löschen

Nutzer können Ihr internes GitLab-Konto jederzeit löschen, indem sie Einstellungen > Konto > Konto löschen in einem Browser wählen und den Vorgang mit ihrem Benutzernamen (bei Konten, die über den SSO der Universität Rostock verknüpft sind) bzw. Passwort (bei externen Konten) bestätigen.

Ist das Konto als alleiniger Owner einer Gruppe eingetragen, muss diese zuvor gelöscht werden (z.B. falls man das einzige Mitglied ist) oder mindestens ein anderes Mitglied als Owner hinzugefügt werden. Andernfalls ist das Löschen des Nutzerkontos nicht möglich.

Weitere Hilfe