Git
Chapters ▾ 2nd Edition

4.8 Git auf dem Server - GitLab

GitLab

GitWeb ist allerdings ziemlich einfach. Wenn Sie nach einem moderneren, voll ausgestatteten Git-Server suchen, gibt es einige Open-Source-Lösungen, die Sie stattdessen installieren können. Da GitLab eines der beliebtesten ist, werden wir uns mit der Installation im Detail befassen und es als Beispiel verwenden. Dies ist etwas komplexer als die GitWeb-Option und erfordert wahrscheinlich 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 wird dieser Prozess sehr gut dokumentiert und unterstützt.

Es gibt einige Möglichkeiten, wie Sie GitLab installieren können. Um etwas schnell zum Laufen zu bringen, können Sie ein Virtual-Machine-Image oder ein One-Klick-Installationsprogramm von https://bitnami.com/stack/gitlab herunterladen und die Konfiguration an Ihre spezielle Umgebung anpassen. Ein netter Punkt, den Bitnami hinzugefügt hat, ist der Anmeldebildschirm (erreichbar durch Eingabe von alt+ →); er sagt Ihnen die IP-Adresse und den standardmäßigen Benutzernamen und das Passwort für das installierte GitLab.

Der Anmeldebildschirm für die virtuelle Maschine von Bitnami GitLab
Figure 50. Der Anmeldebildschirm für die virtuelle Maschine von Bitnami GitLab

Für alles andere beachten Sie bitte die Hinweise in der Readme-Datei der GitLab Community Edition, die Sie unter https://gitlab.com/gitlab-org/gitlab-ce/tree/master finden. Dort finden Sie Hilfe bei der Installation von GitLab mit Kochrezepten, einer virtuellen Maschine auf Digital Ocean und RPM- und DEB-Paketen (die sich derzeit in der Beta-Version befinden). Es gibt auch „inoffizielle“ Anleitungen, wie Sie GitLab mit nicht standardmäßigen Betriebssystemen und Datenbanken zum Laufen bringen können – dazu ein vollständig manuelles Installationsskript und viele andere Inhalte.

Administration

Die Verwaltungsoberfläche von GitLab wird über das Internet aufgerufen. Benutzen Sie einfach Ihren Browser, um den Hostnamen oder die IP-Adresse, auf der GitLab installiert ist, anzugeben, und melden Sie sich als Admin-Benutzer an. Der Standardbenutzername ist admin@local.host, das Standardpasswort ist 5iveL!fe (das Sie nach der Eingabe ändern müssen). Klicken Sie nach der Anmeldung im Menü oben rechts auf das Symbol „Admin-Bereich“.

Der „Admin-Bereich“ im GitLab-Menü
Figure 51. Der „Admin-Bereich“ im GitLab-Menü

Benutzer

Bei den Anwendern in GitLab handelt es sich um Konten, die Personen zugeordnet sind. Benutzerkonten haben keine große Komplexität; hauptsächlich handelt es sich um eine Sammlung von persönlichen Informationen, die an Login-Daten geknüpft sind. Jedes Benutzerkonto enthält 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
Figure 52. Das Fenster der Benutzerverwaltung von GitLab

Das Entfernen eines Benutzers kann auf zwei Arten erfolgen. Das „Blockieren“ eines Benutzers verhindert, dass er sich am GitLab anmeldet, aber alle Daten unter dem Namensraum dieses Benutzers bleiben erhalten, und 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 natürlich eine viel dauerhaftere und destruktivere Aktion, die kaum angewendet wird.

Gruppen

Eine GitLab-Gruppe ist eine Zusammenstellung von Projekten, zusammen mit Daten darüber, wie Benutzer auf diese Projekte zugreifen können. Jede Gruppe hat einen Projektnamensraum (genauso wie Benutzer), so dass, wenn die Gruppe training ein Projekt materials hat, die URL http://server/training/materials lautet.

Der Admin-Bildschirm für die Gruppenverwaltung von GitLab.
Figure 53. Der Admin-Bildschirm für die Gruppenverwaltung von GitLab.

Jede 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 der 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 auch 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 bestimmten Benutzern explizit Zugriff gewähren. Ein internes Projekt ist für jeden angemeldeten Benutzer sichtbar, und ein öffentliches (engl. public) Projekt ist für jeden sichtbar. Beachten Sie, 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 beide führt der GitLab-Server einen HTTP POST mit einem beschreibenden JSON durch, wenn relevante Ereignisse eintreten. Auf diese Weise können Sie Ihre Git-Repositorys und GitLab-Instanzen mit dem Rest Ihrer Entwicklungsverwaltung verbinden, wie z.B. CI-Server, Chatrooms oder Bereitstellungstools.

Grundlegende Anwendung

Das erste, was Sie mit GitLab anfangen sollten, ist das Erstellen eines neuen Projekts. Dies geschieht durch Anklicken des Symbols „+“ in der Symbolleiste. Sie werden nach dem Namen des Projekts gefragt, zu welchem Namensraum es gehören soll und wie hoch seine Sichtbarkeit sein soll. Das meiste, was Sie hier angeben, ist nicht permanent und kann später über die Einstellungs-Oberfläche neu angepasst werden. Klicken Sie auf „Projekt erstellen“, und Sie sind fertig.

Sobald das Projekt existiert, werden Sie es vermutlich mit einem lokalen Git-Repository verbinden wollen. Jedes Projekt ist über HTTPS oder SSH zugänglich, von denen jede zur Konfiguration einer externen Verbindung mit Git verwendet werden kann. 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 den gehosteten Standort:

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

IWenn Sie noch keine lokale Kopie des Repositorys haben, können Sie das ganz einfach nachholen:

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

Die Web-Benutzeroberfläche bietet Zugriff auf mehrere nützliche Anzeigen des Repositorys selbst. Die Homepage jedes Projekts zeigt die letzten Aktivitäten an, und Links oben führen Sie zu Ansichten der Projektdateien und zum Commit-Log.

Zusammen arbeiten

Die einfachste Art der Zusammenarbeit bei einem GitLab-Projekt besteht darin, einem anderen Benutzer direkten Push-Zugriff auf das Git-Repository zu ermöglichen. Sie können einen Benutzer zu einem Projekt hinzufügen, indem Sie im Abschnitt „Mitglieder“ der Einstellungen dieses Projekts den neuen Benutzer einer Zugriffsebene zuordnen (die verschiedenen Zugriffsebenen werden in den Gruppen ein wenig erläutert). Indem ein Benutzer eine Zugriffsebene von „Developer“ oder höher erhält, kann dieser Benutzer Commits und Branches direkt und ohne Einschränkung in das Repository verschieben.

Eine weitere, stärker entkoppelte Art der Zusammenarbeit ist die Nutzung von Merge-Anfragen. Diese Funktion ermöglicht es jedem Benutzer, der ein Projekt sehen kann, kontrolliert dazu beizutragen. Benutzer mit direktem Zugriff können einfach einen Branch erstellen, Commits auf ihn verschieben 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 anfordern. 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 der langjährigen Zusammenarbeit in GitLab. Jede Merge-Anfrage ermöglicht eine zeilenweise Diskussion der vorgeschlagenen Änderung (was eine einfache Art der Code-Überprüfung unterstützt), sowie einen allgemeinen Diskussions-Thread. Beide können Benutzern zugeordnet oder in Milestone-Etappen organisiert werden.

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