Git
Chapters ▾ 2nd Edition

4.8 Git na strežniku - GitLab

GitLab

GitWeb je konec koncev precej enostaven. Če iščete moderen strežnik Git s polno lastnostmi, je na voljo nekaj odprtokodnih rešitev, ki jih lahko namestite namesto tega. Ker je GitLab eden izmed popularnejših, bomo kot primer šli skozi namestitev in uporabo. To je nekoliko bolj kompleksno kot opcija GitWeb in bo zahtevalo več vzdrževanja, je pa polno opremljena možnost.

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. GitLab močno priporoča namestitev GitLaba na vaš strežnik prek uradnega paketa Omnibus GitLab.

Druge možnosti namestitve so:

  • GitLab Helm chart za uporabo s Kubernetes.

  • Dockerizirani paketi GitLab za uporabo z Dockerjem.

  • Iz izvornih datotek.

  • Ponudniki oblakov, kot so AWS, Google Cloud Platform, Azure, OpenShift in Digital Ocean.

Za več informacij preberite GitLab Community Edition (CE) readme.

Administracija

GitLabov administracijski vmesnik je dostopen preko spleta. Enostavno pokažite svoj brskalnik na ime gostitelja ali naslov 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 (ki ga morate takoj spremeniti). Ko se enkrat prijavite, kliknite na ikono »Admin area« v meniju desno zgoraj.

Element »Admin area« v meniju GitLab
Slika 50. Element »Admin area« v meniju GitLab

Uporabniki

Vsakdo, ki uporablja strežnik GitLab, mora imeti uporabniški račun. Uporabniški računi so precej preprosti, večinoma vsebujejo osebne informacije, ki so pripete 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 project, je URL projekta http://server/jane/project.

Zaslon administracije uporabnika GitLab
Slika 51. Zaslon administracije uporabnika GitLab

Uporabnika se lahko odstrani na dva načina: »Blokiranje« uporabnika prepreči prijavo v instanco GitLab, vendar bodo vsi podatki pod uporabniškim imenskim prostorom ohranjeni in potrditve, poslane s tem uporabniškim e-naslovom, bodo še vedno povezovale njegov profil.

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

Skupine

Skupina GitLab je zbirka projektov skupaj s podatki o tem, kako lahko uporabniki dostopajo do teh projektov. Vsaka skupina ima imenski prostor projekta (enako, kakor imajo to uporabniki), torej če ima skupina training projekt materials, bi bil njen URL http://server/training/materials.

Administracijski zaslon skupin GitLab
Slika 52. Administracijski zaslon skupin GitLab

Vsaka skupina je povezana s številom uporabnikov, vsak od njih ima nivo pravic za skupinske projekte in samo skupino. To obsega vse od »Guest« (samo težave in pogovor) do »Owner« (poln nadzor nad skupino, njenimi člani in njenimi projekti). Tipi pravic so tukaj preveč številni za izpis, vendar GitLab ima na administracijskem zaslonu koristno povezavo.

Projekti

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

Vsak projekt ima tudi nivo vidnosti, kar nadzira, kdo ima dostop za branje do strani in repozitorijev tega projekta. Če je projekt zaseben, mora lastnik projekta eksplicitno odobriti dostop določenim uporabnikom. Interni projekt je viden kateremukoli prijavljenemu uporabniku in javni projekt je viden komurkoli. Bodite pozorni, saj to nadzira tako dostop git fetch kot tudi dostop do spletnega uporabniškega vmesnika za ta projekt.

Kljuke

GitLab vključuje podporo za kljuke tako na projektnem kot na sistemskem nivoju. Za katerokoli od teh bo strežnik GitLab 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 instanco GitLab z vašo preostalo avtomatizacijo, kot je strežnik CI, pogovorne sobe ali nalagalna orodja.

Osnovna uporaba

Prva stvar, ki jo boste z GitLabom želeli narediti, 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 Project« in ste opravili.

Enkrat, ko projekt obstaja, ga boste verjetno želeli povezati z lokalnim repozitorijem Git. Vsak projekt je dostopen preko HTTPS ali SSH, katerikoli od teh se lahko uporabi 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 gostujoči lokaciji:

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

Če nimate lokalne kopije repozitorija, jo lahko enostavno naredite na naslednji način:

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

Spletni UI ponuja dostop do mnogih uporabnih pogledov samega repozitorija. Vsaka domača stran projekta prikazuje zadnjo dejavnost in povezave na vrhu vas bodo peljale do pogledov projektnih datotek in dnevnika potrjevanja.

Skupno delo

Najenostavnejši način skupnega dela na projektu GitLab je dati drugemu uporabniku neposredne pravice potiskanja v repozitorij Git. Projektu lahko dodate uporabnika tako, da greste na razdelek »Members« v nastavitvah tega projekta in povežete novega uporabnika z nivojem dostopa (različni nivoji dostopa so predebatirani nekoliko v odseku Skupine). Z dajanjem uporabniku nivo dostopa »Developer« ali več, lahko ta uporabnik potiska potrditve in veje neposredno v repozitorij.

Drug bolj razvezan način sodelovanja je z uporabo zahtevkov združevanja. Ta lastnost omogoča na nadziran način, da katerikoli uporabnik vidi projekt za sodelovanje. Uporabniki z neposrednim dostopom lahko enostavno ustvarijo vejo, vanjo potisnejo potrditve in odprejo zahtevek združevanja iz njihove veje nazaj v master ali katerokoli drugo vejo. Uporabniki, ki nimajo pravic potiskanja za repozitorij, lahko naredijo t. i. »vejitev« (angl. fork) in ustvarijo njihovo lastno kopijo, pošljejo potrditve v njihovo kopijo in odprejo zahtevek združevanja iz njihove vejitve 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 nezaupljivimi uporabniki.

Zahtevki združevanja in težave so glavne enote dolgo živečih diskusij v GitLabu. Vsak zahtevek združevanja omogoča debato po vrsticah predlagane spremembe (kar podpira enostaven način pregleda kode), kot tudi splošno skupno nit diskusije. Oboje se lahko določi uporabniku ali organizira v mejnike.

Ta razdelek je osredotočen v glavnem na lastnosti GitLaba povezane z Gitom, 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 izmed koristi GitLaba 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čino administracije in splošne uporabe se lahko doseže preko vmesnika znotraj brskalnika.

scroll-to-top