Chapters ▾ 2nd Edition

4.8 Git på servern - GitLab

GitLab

GitWeb är rätt enkelt. Om du vill ha en modern, fullfjädrad Git-server finns flera alternativ med öppen källkod du kan installera. GitLab är ett av de populära, så vi använder det som exempel. Det här är mer komplext än GitWeb och kräver mer underhåll, men det är också ett fullfjädrat alternativ.

Installation

GitLab är en databaskopplad webbapplikation, så installationen är mer omfattande än för vissa andra Git-servrar. Lyckligtvis är processen väl dokumenterad och stödd. GitLab rekommenderar starkt att du installerar via det officiella Omnibus GitLab-paketet.

De andra installationsalternativen är:

  • GitLab Helm-diagram för Kubernetes.

  • Dockerpaket för användning med Docker.

  • Från källkod.

  • Molnleverantörer som AWS, Google Cloud Platform, Azure, OpenShift och Digital Ocean.

Mer information finns i GitLab Community Edition (CE) readme.

Administration

GitLabs administrationsgränssnitt nås via webben. Peka webbläsaren mot värdnamnet eller IP-adressen där GitLab är installerat och logga in som användaren root. Lösenordet beror på installationstypen, men Omnibus GitLab genererar som standard ett lösenord och sparar det i /etc/gitlab/initial_root_password i minst 24 timmar. Följ dokumentationen för detaljer. När du är inloggad klickar du på ikonen “Admin area” längst upp till höger.

`Admin area` i GitLab-menyn
Figur 50. “Admin area” i GitLab-menyn

Användare

Alla som använder din GitLab-server måste ha ett användarkonto. Användarkonton är ganska enkla och innehåller främst personlig information kopplad till inloggning. Varje användarkonto har en namnrymd, som är en logisk gruppering av projekt som tillhör användaren. Om användaren jane har ett projekt som heter project är URL:en http://server/jane/project.

Användaradministrationsskärmen i GitLab
Figur 51. Användaradministrationsskärmen i GitLab

Du kan ta bort ett användarkonto på två sätt: “Blockerande” hindrar användaren från att logga in, men data i användarens namnrymd finns kvar och incheckningar signerade med användarens e-post pekar fortfarande till profilen.

“Raderande” tar bort användaren helt från databas och filsystem. Alla projekt och data i namnrymden tas bort, och alla grupper de äger försvinner. Det här är en mer permanent och destruktiv åtgärd och behövs sällan.

Grupper

En GitLab-grupp är en samling projekt och information om hur användare kan komma åt dem. Varje grupp har en projektnamnrymd, precis som användare. Om gruppen training har projektet materials blir URL:en http://server/training/materials.

Gruppadministrationsskärmen i GitLab
Figur 52. Gruppadministrationsskärmen i GitLab

Varje grupp är kopplad till flera användare, var och en med en behörighetsnivå för gruppens projekt och för gruppen i sig. De spänner från “Guest” (bara ärenden och chatt) till “Owner” (full kontroll över gruppen, medlemmar och projekt). Det finns för många nivåer för att lista här, men GitLab har en hjälpsam länk på administrationssidan.

Projekt

Ett GitLabprojekt motsvarar grovt ett enskilt Git-kodförråd. Varje projekt tillhör en enda namnrymd, antingen en användare eller en grupp. Om projektet tillhör en användare har ägaren direkt kontroll över vem som har åtkomst; om projektet tillhör en grupp gäller gruppens behörigheter.

Varje projekt har en synlighetsnivå som styr vem som har läsåtkomst till projektets sidor och kodförråd. Om ett projekt är Private måste ägaren uttryckligen ge åtkomst till specifika användare. Ett Internal-projekt är synligt för alla inloggade användare, och Public är synligt för alla. Observera att detta styr både git fetch-åtkomst och åtkomst till webbgränssnittet.

Krokar

GitLab har stöd för krokar både på projekt- och systemnivå. I båda fallen skickar GitLabservern ett HTTP POST-anrop med beskrivande JSON när en relevant händelse inträffar. Det är ett bra sätt att koppla dina Git-kodförråd och GitLabinstansen till resten av utvecklingsautomationen, som CI-servrar, chattrum eller distributionsverktyg.

Grundläggande användning

Det första du vanligtvis gör är att skapa ett nytt projekt. Det gör du genom att klicka på “+” i verktygsfältet. Du ombeds ange projektnamn, namnrymd och synlighetsnivå. Det mesta du anger här är inte permanent och kan ändras senare i inställningarna. Klicka på “Create Project” och du är klar.

När projektet finns vill du normalt koppla det till ett lokalt Git-kodförråd. Varje projekt är tillgängligt via HTTPS eller SSH, och båda kan användas för att konfigurera ett fjärrkodförråd. URL:erna visas högst upp på projektets startsida. För ett befintligt lokalt kodförråd skapar detta kommando en fjärrreferens som heter gitlab:

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

Om du inte har en lokal kopia kan du bara göra:

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

Webbgränssnittet ger åtkomst till flera användbara vyer av kodförrådet. På varje projekts startsida syns senaste aktivitet, och länkarna i toppen leder till projektets filer och incheckningslogg.

Arbeta tillsammans

Det enklaste sättet att samarbeta i ett GitLabprojekt är att ge varje användare direkt åtkomst att skicka till kodförrådet. Du lägger till en användare via avsnittet “Members” i projektets inställningar och kopplar den till en behörighetsnivå (nivåerna diskuteras kort i Grupper). Med behörigheten “Developer” eller högre kan användaren skicka incheckningar och grenar direkt till kodförrådet.

Ett mer frikopplat sätt att samarbeta är via ändringsförfrågan. Funktionen låter alla som kan se projektet bidra kontrollerat. Användare med direkt åtkomst kan skapa en gren, skicka incheckningar till den och öppna en ändringsförfrågan från grenen tillbaka till master eller en annan gren. Användare utan skrivrättigheter kan avgrena kodförrådet (skapa sin egen kopia), skicka incheckningar till sin kopia och öppna en ändringsförfrågan från sin gren tillbaka till huvudprojektet. Den modellen gör att ägaren behåller full kontroll över vad som går in och när, samtidigt som bidrag från obetrodda användare tillåts.

Ändringsförfrågan och ärenden är de viktigaste enheterna för långlivade diskussioner i GitLab. Varje ändringsförfrågan tillåter rad-för-rad-diskussion av den föreslagna ändringen (en enkel form av kodgranskning), samt en övergripande diskussionstråd. Båda kan tilldelas användare eller organiseras i milstolpar.

Detta avsnitt fokuserar främst på Git-relaterade funktioner, men GitLab har många andra verktyg som hjälper team att arbeta tillsammans, till exempel projektsidor och systemunderhållsverktyg. En fördel med GitLab är att när servern väl är i gång behöver du sällan justera konfigurationsfiler eller logga in via SSH; det mesta av administration och användning sker i webbläsaren.