Git
Chapters ▾ 2nd Edition

4.8 Git auf dem Server - GitLab

GitLab

GitWeb ist jedoch ein recht übersichtliches Tool. Wenn du einen modernen, voll ausgestatteten Git-Server suchst, gibt es einige Open-Source-Lösungen, die du stattdessen installieren kannst. Da GitLab einer der beliebtesten ist, werden wir uns mit der Installation im Detail befassen und es als Beispiel verwenden. Dies ist etwas schwieriger als die GitWeb-Option und erfordert mehr Wartung, aber es ist eine viel umfassendere Lösung.

Installation

GitLab ist eine datenbankgestützte Webanwendung, so dass die Installation etwas aufwändiger ist als bei einigen anderen Git-Servern. Glücklicherweise ist dieser Prozess sehr gut dokumentiert und unterstützt. GitLab empfiehlt dringend, GitLab über das offizielle Omnibus GitLab-Paket zu installieren.

Die anderen Installationsmethoden sind:

  • GitLab Helm-Chart zur Verwendung mit Kubernetes.

  • Dockerisierte GitLab-Pakete zur Verwendung mit Docker.

  • Direkt aus den Quelldateien.

  • Cloud-Anbieter wie AWS, Google Cloud Platform, Azure, OpenShift und Digital Ocean.

Weitere Informationen findest du in der Readme-Datei GitLab Community Edition (CE).

Administration

Die Verwaltungsoberfläche von GitLab wird ist webbasiert. Benutze einfach deinen Browser, um den Hostnamen oder die IP-Adresse, auf der GitLab installiert ist, anzugeben, und melden dich als Admin-Benutzer an. Der Standardbenutzername ist admin@local.host, das Standardpasswort ist 5iveL!fe (dies muss nach der Eingabe geändert werden). Klicke nach der Anmeldung im Menü oben rechts auf das Symbol „Admin-Bereich“.

Der „Admin-Bereich“ im GitLab-Menü
Abbildung 50. Der „Admin-Bereich“ im GitLab-Menü

Benutzer

Jeder Gitlab Nutzer muß ein Benutzerkonto besitzen. Benutzerkonten sind recht simple. Hauptsächlich beinhalten sie persönliche Informationen, die an Login-Daten geknüpft sind. Jedes Benutzerkonto hat einen namespace (Namensraum), der eine logische Gruppierung von Projekten ist, die diesem Benutzer gehören. Wenn der Benutzer jane ein Projekt mit dem Namen project hätte, wäre die URL dieses Projekts http://server/jane/project.

Das Fenster der Benutzerverwaltung von GitLab
Abbildung 51. Das Fenster der Benutzerverwaltung von GitLab

Das Löschen eines Benutzers kann auf zwei Arten erfolgen. Das „Blockieren“ eines Benutzers verhindert, dass er sich am GitLab anmeldet. Alle Daten unter den Namensraum dieses Benutzers bleiben jedoch erhalten. Mit der E-Mail-Adresse dieses Benutzers signierte Commits werden weiterhin mit seinem Profil verknüpft.

Das „Zerstören“ eines Benutzers hingegen entfernt ihn vollständig aus der Datenbank und dem Dateisystem. Alle Projekte und Daten in seinem Namensraum werden entfernt, und alle Gruppen, die sich in seinem Besitz befinden, werden ebenfalls entfernt. Das ist eine permanente und destruktive Aktion, die in der Regel selten angewendet wird.

Gruppen

Eine GitLab-Gruppe ist eine Sammlung von Projekten. Zusätzlich beinhaltet sie Daten, wie Benutzer auf diese Projekte zugreifen können. Jede Gruppe hat einen Projektnamensraum (genauso wie Benutzer). Wenn die Gruppe training ein Projekt materials hat, lautet die URL http://server/training/materials.

Der Admin-Bildschirm für die Gruppenverwaltung von GitLab
Abbildung 52. Der Admin-Bildschirm für die Gruppenverwaltung von GitLab

Jeder Gruppe ist einer Reihe von Benutzern zugeordnet, von denen jeder eine Berechtigungsstufe für die Projekte der Gruppe und der Gruppe selbst hat. Diese reichen von „Guest“ (nur Themen und Chat) bis hin zu „Owner“ (volle Kontrolle über die Gruppe, ihre Mitglieder und ihre Projekte). Die Arten von Berechtigungen sind zu zahlreich, um sie hier aufzulisten, aber GitLab hat einen hilfreichen Link auf dem Administrationsbildschirm.

Projekte

Ein GitLab-Projekt entspricht in etwa einem einzelnen Git-Repository. Jedes Projekt gehört zu einem einzigen Namensraum, entweder einem Benutzer oder einer Gruppe. Wenn das Projekt einem Benutzer gehört, hat dieser Projektbesitzer die direkte Kontrolle darüber, wer Zugriff auf das Projekt hat. Falls das Projekt einer Gruppe gehört, werden auch die Berechtigungen der Gruppe auf Benutzerebene wirksam.

Jedes Projekt hat eine Zugriffsebene, die steuert, wer Lesezugriff auf die Seiten und das Repository des Projekts hat. Wenn ein Projekt privat ist, muss der Eigentümer des Projekts Benutzern explizit Zugriff gewähren. Ein internes Projekt ist für jeden angemeldeten Benutzer sichtbar. Ein öffentliches (engl. public) Projekt ist für jeden sichtbar. Beachte, dass dies sowohl den Zugriff auf git fetch als auch den Zugriff auf die Web-Benutzeroberfläche für dieses Projekt steuert.

Hooks

GitLab bietet Unterstützung für Hooks, sowohl auf Projekt- als auch auf Systemebene. Für beides führt der GitLab-Server einen HTTP POST mit einem beschreibenden JSON durch, wenn relevante Ereignisse eintreten. Auf diese Weise kannst du deine Git-Repositorys und GitLab-Instanzen mit dem Rest deiner Entwicklungsplattform verbinden, wie z.B. CI-Server, Chatrooms oder Deploymenttools.

Grundlegende Anwendung

Das erste, was du mit GitLab machen solltest, ist das Erstellen eines neuen Projekts. Dies geschieht durch Anklicken des Symbols „+“ in der Symbolleiste. Du wirst nach dem Namen des Projekts gefragt, zu welchem Namensraum es gehören soll und wie seine Sichtbarkeit sein soll. Das meiste, was du hier angibst, ist nicht permanent und kann später über die Konfigurations-Oberfläche angepasst werden. Klicke auf „Projekt erstellen“, und du bist fertig.

Sobald das Projekt existiert, wirst du es vermutlich mit einem lokalen Git-Repository verbinden wollen. Jedes Projekt ist über HTTPS oder SSH zugänglich. Beide können genutzt werden, um ein Git-Remote zu konfigurieren. Die URLs sind oben auf der Startseite des Projekts sichtbar. Für ein bestehendes lokales Repository erstellt dieser Befehl einen Remote mit Namen gitlab für die gehostete Instanz:

$ git remote add gitlab https://server/namespace/project.git

Wenn du noch keine lokale Kopie des Repositorys hast, kannst du das ganz einfach nachholen:

$ git clone https://server/namespace/project.git

Die Web-Benutzeroberfläche bietet Zugriff auf viele nützliche Informationen des Repositorys. Die Homepage jedes Projekts zeigt die letzten Aktivitäten an. Die Links oben zeigen verschiedene Ansichten der Projektdateien und zum Commit-Log.

Zusammen arbeiten

Die einfachste Art der Zusammenarbeit bei einem GitLab-Projekt besteht darin, jedem Benutzer direkten Push-Zugriff auf das Git-Repository zu ermöglichen. Du kannst einem Benutzer zu einem Projekt hinzufügen, indem du im Abschnitt „Mitglieder“ der Einstellungen dieses Projekts den neuen Benutzer einer Zugriffsebene zuordnest. Die verschiedenen Zugriffsebenen werden in den Gruppen erläutert. Indem ein Benutzer die Zugriffsebene „Developer“ oder höher erhält, kann dieser Benutzer Commits und Branches direkt und ohne Einschränkung in das Repository pushen.

Eine weitere, stärker entkoppelte Art der Zusammenarbeit ist die Nutzung von Merge-Requests. Diese Funktion ermöglicht es jedem Benutzer, der ein Projekt sehen kann, kontrollierter dazu beizutragen. Benutzer mit direktem Zugriff können einfach einen Branch erstellen, auf ihn committen und einen Merge-Request von ihrem Branch zurück in den master oder einen anderen Branch einreichen. Benutzer, die keine Push-Berechtigungen für ein Repository haben, können es „forken“ (ihre eigene Kopie erstellen), Push-Commits für diese Kopie erstellen und einen Merge-Request von ihrer Fork zurück zum Hauptprojekt einreichen. Dieses Modell ermöglicht es dem Eigentümer, die volle Kontrolle darüber zu behalten, was wann in das Repository gelangt, und gleichzeitig Beiträge von unbekannten Benutzern zu ermöglichen.

Merge-Requests und Issues sind die Hauptelemente von langlebigen Diskussionen in GitLab. Jede Merge-Request ermöglicht eine zeilenweise Diskussion der vorgeschlagenen Änderung. Damit kann eine einfache Code-Überprüfung (engl. Code-Review) sowie ein Diskussionsstrang umgesetzt werden. Beide können Benutzern zugeordnet oder in Meilensteine organisiert werden.

Dieser Abschnitt konzentriert sich hauptsächlich auf die Git-bezogenen Funktionen von GitLab. Als ausgereiftes Programm bietet es viele weitere Funktionen, die dir bei der Teamarbeit helfen, wie Projekt-Wikis und System-Wartungstools. Ein Vorteil von GitLab ist, dass du nach der Einrichtung und Inbetriebnahme des Servers selten eine Konfigurationsdatei anpassen oder über SSH auf den Server zugreifen musst. Die überwiegende Verwaltung und allgemeine Nutzung kann über die Browser-Oberfläche erfolgen.

scroll-to-top