Git
Chapters ▾ 2nd Edition

4.8 Git na strežniku - GitLab

GitLab

GitWeb je precej enostaven konec koncev. Če iščete bolj moderni, strežnik Git s polno lastnostmi, je na voljo nekaj odprtokodnih rešitev, ki jih lahko namestite namesto tega. Ker je GitLab eden bolj popularnih, bomo šli skozi namestitev in uporabo kot primer. To je nekoliko bolj kompleksno kot opcija GitWeb in verjetno zahteva več vzdrževanja, vendar je veliko bolj opcija z več lastnostmi.

Namestitev

GitLab je spletna aplikacija podprta s podatkovno bazo, torej njegova namestitev vključuje nekoliko več vključevanja kot ostali strežniki git. Na srečo je ta proces zelo dobro dokumentiran in podprt.

Na voljo je nekaj metod, ki jih lahko uporabite za namestitev GitLab-a. Da postavite nekaj na hitro, lahko prenesete sliko virtualne naprave ali namestitveni program enega klika iz https://bitnami.com/stack/gitlab in prilagodite nastavitve, da se ujemajo z vašim določenim okoljem. Lep pristop, ki ga je Bitnami vključil, je prijavni zaslon (dostopan z vtipkanjem alt-→); pove vam naslov IP in privzeto uporabniško ime ter geslo za nameščeni GitLab.

The Bitnami GitLab virtual machine login screen.
Figure 50. The Bitnami GitLab virtual machine login screen.

Za karkoli drugega, sledite vodiču v datoteki readme GitLab izdaje skupnosti, ki se jo lahko najde na https://gitlab.com/gitlab-org/gitlab-ce/tree/master. Tam boste našli podporo za namestitev GitLab-a z uporabo Chef receptov, virtualno napravo na Digital Ocean in RPM ter DEB pakete (ki so v času tega pisanja v beta fazi). Na voljo je tudi “neuradni” vodič, kako dobiti GitLab, ki se poganja z ne-standardnimi operacijskimi sistemi ter podatkovnimi bazami, v celoti ročno namestitveno skripto in mnogo ostalih tem.

Administracija

GitLab-ov administracijski vmesnik je dostopen preko spleta. Enostavno pokažite vaš brskalnik k imenu gostitelja ali naslovu IP, kjer je GitLab nameščen in se prijavite kot uporabnik admin. Privzeto uporabniško ime je admin@local.host in privzeto geslo je 5iveL!fe (za katerega vas bo vprašalo, da spremenite kakor hitro ga vnesete). Ko se enkrat prijavite, kliknite na ikono “Admin area” v meniju zgoraj desno.

The ``Admin area'' item in the GitLab menu.
Figure 51. The “Admin area” item in the GitLab menu.

Uporabniki

Uporabniki v GitLab-u so računi, ki se ujemajo z ljudmi. Uporabniški računi nimajo veliko kompleksnosti; v celoti je zbirka osebnih informacij, pripetih k prijavnim podatkom. Vsak uporabniški račun prihaja z imenskim prostorom, kar je logično grupiranje projektov, ki pripadajo temu uporabniku. Če ima uporabnik jane projekt imenovan projekt, je url projekta http://server/jane/project.

The GitLab user administration screen.
Figure 52. The GitLab user administration screen.

Odstranjevanje uporabnika je lahko narejeno na dva načina. “Blokiranje” uporabnika mu prepreči prijavo v instanco GitLab, vendar vsi podatki pod uporabniškim imenskim prostorom so shranjeni in pošiljanja poslana s tem uporabniškim e-naslovom bodo še vedno povezovala njegov profil.

“Uničenje” uporabnika ga po drugi strani v celoti odstrani iz podatkovne baze in datotečnega sistema. Vsi projekti in podatki v njihovem imenskem prostoru so odstranjeni in katerekoli skupine, ki jih imajo v lasti bodo tudi odstranjene. To je očitno veliko bolj dokončna in destruktivna akcija in njene uporabe so redke.

Skupine

GitLab skupina je montaža projektov skupaj s podatki o tem, kako lahko uporabniki dostopajo do teh projektov. Vsaka skupina ima imenski prostor projekta (enak način, kakor to delajo uporabniki), torej če ima skupina training projekt materials, bi bil njen url http://server/training/materials.

The GitLab group administration screen.
Figure 53. The GitLab group administration screen.

Vsaka skupina je povezana s število uporabnikov, vsak od njih ima nivo pravic za skupinske projekte in samo skupino. To so območja od “Guest” (težave in samo pogovor) do “Owner” (polna kontrola skupina, njenih članov in njenih projektov). Tipi pravic so preveč številni za izpis tu, vendar GitLab je pomoči polna povezava na administracijskem zaslonu.

Projekti

GitLab projekt približno ustreza enemu repozitoriju git. Vsak projekt pripada enemu imenskemu prostoru ali uporabnika ali skupine. Če projekt pripada uporabniku, ima lastnik projekta direktno kontrolo nad tem, kdo ima dostop do projekta; če projekt pripada skupini, potem bodo pravice skupinskega nivoja uporabnika tudi imele učinek.

Vsak projekt ima tudi nivo vidnosti, kar kontrolira, kdo ima dostop branja do strani in repozitorijev tega projekta. Če je projekt Private, mora lastnik projekta eksplicitno odobriti dostop določenem uporabnikom. Interni projekt je viden kateremkoli prijavljenem uporabniku in javni projekt je viden komurkoli. Bodite pozorni, da to krmili tako git “fetch” dostop kot tudi dostop do spletnega uporabniškega vmesnika za ta projekt.

Kljuke

GitLab vključuje podporo za ključe tako na projektnem ali sistemskem nivoju. Za katerokoli od teh, bo GitLab strežnik izvedel HTTP POST z nekim opisnim JSON, kadarkoli se zgodi relevanten dogodek. To je odličen način za povezavo vaših repozitorijev git in instance GitLab z vašo preostalo avtomatizacijo, kot je CI strežnik, pogovorne sobe ali nalagalna orodja.

Osnovna uporaba

Prva stvar, ki jo boste želeli narediti z GitLab-om je ustvariti nov projekt. To se doseže s klikom na ikono “+” na orodni vrstici. Vprašani boste za ime projekta, kateremu imenskemu prostoru naj bi pripadal in kakšen nivo vidnosti bi moral imeti. Večino česar določite tu ni dokončno in se lahko ponovno prilagodi kasneje skozi vmesnik nastavitev. Kliknite na “Create Projet” in ste končali.

Enkrat, ko projekt obstaja, ga boste verjetno želeli povezati z lokalnim Git repozitorijem. Vsak projekt je dostopen preko HTTPS ali SSH, katerikoli od teh je lahko uporabljen za nastavitev daljave Git. URL-ji so vidni na vrhu domače strani projekta. Za obstoječe lokalne repozitorije ta ukaz ustvari daljavo imenovano gitlab h gostovani lokaciji:

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

Če nimate lokalne kopije repozitorija, lahko enostavno naredite sledeče:

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

Spletni UI ponuja dostop do mnogih uporabnik pogledov samega repozitorija. Vsaka domača stran projekta prikazuje zadnjo aktivnost in povezave na vrhu vas bodo peljale do pogledov projektnih datotek in dnevnika pošiljanja.

Delo skupaj

Najenostavnejši način dela skupaj na GitLab projektu je dajanje drugemu uporabniku direktne pravice porivanja v repozitorij git. Lahko dodate uporabnika projektu, da greste v sekcijo “Members” nastavitev tega projekta in povežete novega uporabnika z nivojem dostopa (različni nivoji dostopa so predebatirani nekoliko v Skupine). Z dajanjem uporabniku nivo dostopa “Developer” ali več, ta uporabnik lahko potiska pošiljanja in veje direktno v repozitorij brez kaznovanja.

Drug bolj razvezan način sodelovanja je z uporabo zahtevkov združevanja. Ta lastnost omogoča kateremukoli uporabniku, da vidit projekt za sodelovanje na kontroliran način. Uporabniki z direktnim dostopom lahko enostavno ustvarijo vejo, vanj pošljejo in odprejo zahtevek združevanja iz njihove veje nazaj v master ali katerokoli drugo vejo. Uporabniki, ki nimajo pravic porivanja za repozitorij lahko naredijo t.i. “fork” (ustvarijo njihovo lastno kopijo), pošljejo v to kopijo, odprejo zahtevek združevanja iz njihovega fork-a nazaj v glavni projekt. Ta model omogoča lastniku, da ima polno kontrolo nad tem, kaj gre v repozitorij in kdaj, medtem ko omogoča sodelovanje z nezaupanimi uporabniki.

Zahtevki združevanja in težave so glavna enota dolgo-živečih diskusij v GitLab-u. Vsak zahtevek združevanja omogoča debato tipa vrstica-za-vrstico predlagane spremembe (ki podpira lahek način pregleda kode), kot tudi splošno skupno nit diskusije. Oba sta lahko določena uporabnikom ali organizirana v mejnike.

Ta sekcija je osredotočena v glavnem na Git-povezane lastnosti GitLab-a, vendar kot zrel projekt ponuja mnoge ostale lastnosti, ki pomagajo vaši ekipi, da dela skupaj, kot so projektni wikiji in orodja vzdrževanja sistema. Ena korist GitLab-a je ta, da ko je enkrat strežnik nastavljen in v pogonu, boste redko morali prilagoditi nastavitveno datoteko ali dostop do strežnika preko SSH; večina administracije in splošne uporabe je lahko dosežena preko vmesnika znotraj-brskalnika.