GitLab FI
GitLab je webový manažer Git repozitářů, podobný známé službě GitHub. Kromě správy repozitářů (které se zde nazývají projekty) umí GitLab zejména také Wiki a Issue tracking.
Pravidla používání
- Je zakázáno měnit cestu skupiny (group path).
- Repozitáře nejsou určeny pro vkládání velmi velkých souborů.
- Velikost jednoho repozitáře má tvrdý limit 3 GiB, po překročení 2 GiB v součtu
bude automaticky odeslán e-mail s upozorněním.
Velikost jednotlivých repozitářů může snížit funkce Project → Settings → Housekeeping. - Pro uživatele platí globální limit 100 repozitářů. Na požádání lze limit zvýšit.
- Dbejte na dodržování provozních pravidel.
Pokud máte na Fakultě informatiky aktivní účet, můžete se přihlásit pomocí LDAP autentizace na následujícím URL:
https://gitlab.fi.muni.cz/
Zadejte svůj fakultní login a heslo, účet se po prvním přihlášení automaticky vytvoří.
Externí účty
GitLab umožňuje vytvářet typ účtů, které nemohou vlastnit ani vytvářet projekty. Mohou pouze přispívat do projektů, ke kterým dostanou explicitní přístup. Tyto účty se označují jako externí. Je možné je využít pro zpřístupnění projektů výzkumníkům a kolegům z jiných institucí, oponentům nebo konzultantům závěrečných prací atd.
Vytvářet externí účty není možné přímo v GitLab FI, zaměstnanci FI
(členové skupiny fi-int
) však mohou vytvářet,
spravovat a blokovat externí účty v aplikaci
na správu externích účtů ve Fakultní administrativě.
Dokumentaci a nápovědu naleznete přímo v aplikaci.
Platnost účtu
Účet v GitLabu spojený s fakultním účtem je platný pouze pokud je fakultní účet aktivní a neblokovaný. Pokud dojde k zablokování nebo ukončení platnosti fakultního účtu, zablokuje se také přístup do GitLabu včetně SSH klíčů.
SSH klíč
Pokud chcete pracovat s repozitářem ze svého počítače bez nutnosti pokaždé zadávat heslo, můžete si do svého profilu nahrát veřejný SSH klíč. Postupujte podle návodu, zde uvedeme pouze tipy zejména pro linuxové systémy.
Vytvoření SSH klíče
Program ssh-keygen
může během vytváření klíče požádat o zadání hesla. Není to povinné, použití klíče bez hesla je pak jednodušší, nicméně bezpečnější je klíč s heslem.
Použití klíče bez hesla
Otestovat funkčnost klíče můžete příkazem
ssh -i $cesta_k_PRIVATNIMU_klici git@gitlab.fi.muni.cz
Výstup příkazu by měl být podobný následujícímu:
Welcome to GitLab, (Jmeno, Prijmeni) Connection to gitlab.fi.muni.cz closed.
Přidejte následující řádky do ~/.ssh/config
(soubor nemusí dosud existovat):
Host gitlab gitlab.fi.muni.cz
HostName gitlab.fi.muni.cz
IdentityFile cesta_k_PRIVATNIMU_klici
Význam jednotlivých řádků viz ssh_config(5)
.
Vyzkoušejte, že příkaz ssh git@gitlab
má stejný výstup jako výše i bez explicitního uvedení klíče.
Použití klíče s heslem
Pokud tento typ klíče budete používat jako by byl bez hesla, bude každá operace s GitLabem požadovat heslo ke klíči, což nepřináší téměř žádné výhody oproti běžnému přihlašování. S pomocí SSH agenta lze klíč odemknout pouze jednou a pak používat opakovaně:
ssh-agent $SHELL
ssh-add ~/.ssh/id_gitlab
První příkaz spustí agenta, který pak spustí nový shell z proměnné $SHELL
.
Pokud váš shell tuto proměnnou nenastavuje, zadejte místo ní cestu k programu (např. /bin/sh
).
Ukončením shellu se ukončí i agent.
Více informací o příkazech viz manuálové stránky pro ssh-agent(1)
a ssh-add(1)
.
Pozor, ve starší verzi této dokumentace a na různých diskuzních fórech lze najít postup, který používá příkaz eval $(ssh-agent -c)
nebo jemu podobný.
Nedoporučujeme tento postup používat, protože nezaručuje korektní ukončení agenta.
Kerberos
GitLab umožňuje přihlášení do rozhraní a klonování repozitářů pomocí Kerberos tiketů.
Použití na stanicích Nymfe a Musa
Po přihlášení do grafického prostředí počítačů
nymfe* nebo musa*
uživatel automaticky obdrží Kerberos tiket, což lze ověřit příkazem
klist
:
login@nymfe01:~$ klist
Ticket cache: FILE:/tmp/krb5cc_15291
Default principal: login@FI.MUNI.CZ
Valid starting Expires Service principal
12/17/2019 16:16:56 12/18/2019 16:16:51 krbtgt/FI.MUNI.CZ@FI.MUNI.CZ
Přihlášení
Při přihlašování v prohlížečích Mozilla Firefox a Google Chrome (resp. Chromium) lze s platným tiketem použít tlačítko Kerberos Spnego místo zadávání hesla.Klonování
Při klonování repozitáře použijte adresu z Clone with KRB5.Synchronizace
Příkazygit pull
agit push
budou také fungovat bez hesla s platným tiketem.
Tip
O tiket lze požádat explicitně příkazem kinit
.
To může být užitečné při vzdáleném SSH přístupu s autentizací SSH klíčem (např. na Aisu),
kdy se tiket automaticky nevytváří.
Použití ze serverů Aisa, Anxur nebo Aura
Tento přihlašovací mechanizmus lze obecně použít i z jiných UNIXových strojů,
na kterých je Kerberos pro doménu FI.MUNI.CZ
nakonfigurovaný.
Přihlášení
1. Přihlášení heslem
Pokud při přihlašování na server zadáváte heslo, pak byste měli mít hned k dispozici tiket. Vyzkoušejte příkaz:
login@aisa$ klist
2. Přihlášení bez hesla
Přihlášení bez hesla (např. pomocí SSH klíče) tiket nevytvoří. Pokud žádný jiný nemáte, napište příkaz:
login@aisa$ kinit
Po zadání hesla ověřte pomocí
klist
, že tiket máte.Práce s Gitem
Teď můžete v Gitu používat operace, které pracují s Kerberos autentizací (Klonování a Synchronizace výše).
Obnovení tiketu
Pokud platnost tiketu vyprší, operace přestanou fungovat. Z bezpečnostních důvodů GitLab pro každý neautorizovaný přístup hlásí neexistující repozitář (i když ve skutečnosti existuje), proto může být chybová zpráva trochu nečekaná.
Každopádně zkontrolujte pomocí
klist
, že máte platný tiket, a pokud ne, vytvořte si nový příkazemkinit
.
Nastavení vlastního počítače
Tuto možnost lze využít jenom pro stroje v sítí FI. Viz také Omezení přístupu do sítě FI.
Kerberos
Pro použití Kerberos autentizace na vlastním počítači musíte mít nainstalované nástroje pro tento autentizační mechanizmus, např. z balíkůkrb5-user
(Ubuntu, Debian) nebokrb5-workstation
(RHEL, CentOS, Fedora). Pro získání tiketu použijte příkaz:user@machine:~$ kinit login@FI.MUNI.CZ
Git
Git při klonování a synchronizaci může požadovat zadávání hesla, což při autentizaci Kerberem skončí chybouHTTP Basic: Access denied
.
Toto lze vyřešit následujícím příkazem:# nastavení pro uživatele user@machine:~$ git config --global http.emptyAuth true # nastavení pro celý systém user@machine:~$ sudo git config --system http.emptyAuth true
Mozilla Firefox
Zadejte do adresního řádkuabout:config
. V konfiguraci vyhledejte klíčnetwork.negotiate-auth.trusted-uris
a přidejte hodnotufi.muni.cz
.Chromium
Prohlížeč spusťte s parametrem--auth-server-whitelist=*.fi.muni.cz
. Může být užitečné vytvořit si vlastní skript, který Chromium s tímto parametrem spustí, a umístit ho do/usr/local/bin
.
Dokumentaci k funkcím GitLabu naleznete na stránce nápovědy. Zejména doporučujeme
- základy používání (vytvoření projektu, ukázky)
- řízení přístupu k projektům
- migrace repozitářů
- git
Sdílení repozitáře
Pokud chcete zpřístupnit repozitář dalším lidem nad rámec "viditelnosti" projektu (Private, Internal nebo Public), můžete je nastavit jako členy (members) projektu, viz přidávání členů.
Pokud chcete zpřístupnit privátní nebo interní projekt osobě bez fakultního účtu a dané osobě stačí pouze přístup pro stáhnutí projektu (tj. nepotřebuje přístup k Issues, wiki atd.), můžete použít Deploy keys (v podstatě read-only přístup k projektu pomocí SSH klíče). Pokud se požaduje přístup k dalším službám nebo možnost do projektu přispívat, musí se projekt zveřejnit nebo se musí pro osobu vytvořit externí účet (žádejte u správců).
E-mailové odpovědi
Fakultní GitLab má povolenou funkci Reply by E-mail, která umožňuje odpovídat na komentáře, "issues" a "milestones" přímo e-mailem. Pro správné fungování je však důležité dodržet několik pravidel:
- odpovídejte přímo na doručený e-mail použitím funkce
Reply
, nepište nový e-mail - pište vaši odpověď pouze nad citaci nebo nejlépe citaci smažte, GitLab totiž nemusí citaci odstranit správně
- pokud svoje e-maily digitálně podepisujete, k odpovědi do GitLabu raději podpis nepřidávejte
V e-mailu lze používat Markdown a lze přidat přílohy, ty se pak objeví jako přílohy v odpovědi v GitLabu.
Zálohování
Git Repozitáře
Repozitáře uživatelů i skupin se pravidelně automaticky zálohují jako
git bundles.
Zálohování probíhá každý den brzo ráno.
O obnovu omylem smazaného repozitáře žádejte na adrese
gitlabo=KlenPfC@fiYUDID1mjk.muniGNAxPdmQI.cz
.
Repozitář obvykle nelze obnovit přímo do GitLabu, ale poskytneme bundle s plnou zálohou a případně další soubory s inkrementální zálohou. Tuto zálohu je možné obnovit následujícím způsobem:
Soubory
Předpokládejme plnou zálohu v souboru
repo.9RhwIP.0.bundle
a dvě inkrementální zálohy v souborechrepo.9RhwIP.1.bundle
arepo.9RhwIP.2.bundle
.Obnova plné zálohy
Vytvořte klon repozitáře z plné zálohy do adresářerepo
:git clone --mirror repo.9RhwIP.0.bundle repo
Inkrementální zálohy
Plnou zálohu přesuňte, abyste mohli použít cyklus:
Obnovte inkrementální zálohy:mv -i repo.9RhwIP.0.bundle repo.9RhwIP.bundle
for bundle in repo.9RhwIP.*.bundle; do git -C repo remote set-url origin "${PWD}/${bundle}" git -C repo remote update done
Obnova do GitLab FI
Pokud chcete repozitář vrátit do GitLab FI, vytvořte pro něj nový projekt a spusťte následující příkazy:git -C repo remote set-url origin ${url_repozitáře} git -C repo push --all git -C repo push --tags
Issues, Milestones, …
Ostatní součásti projektů (např. Issues) se zálohují spolu s databází GitLabu. Obnova těchto záloh je však náročná a lze obnovit pouze celkový stav databáze.
Z toho důvodu tyto zálohy slouží pouze pro účely obnovy při celkovém výpadku. Kompletní obnova individuálních projektů (kromě repozitářů, viz výše) není možná.
Pro informace o zálohování dalších systémů vizte dokument Zálohování na FI.
Další zajímavé funkce
Fakulta informatiky má licenci pro verzi GitLab Ultimate, které obsahuje všechny možnosti včetně Starter a Premium verzí. Na odkazované stránce naleznete výčet a porovnání verzí. Z těchto by pro uživatele na Fakultě informatiky mohli být zajímavé následující:
CI/CD
Automatizace některých částí vývoje, např. automatické testování, sestavení nebo nasazení produkční verze projektu.
Vizte také popis, oficiální dokumentaci a dokumentaci pro uživatele na FI.GitLab Pages
Webové stránky pro projekt se statickým generátorem nad CI/CD.
Vizte také popis, oficiální dokumentaci a dokumentaci pro uživatele na FI.Repository Mirroring
Starter Automatické zrcadlení Git repozitářů z jiných služeb.
Vizte také oficiální dokumentaci.
Security Dashboard
Ultimate Nástroje pro sledování a řešení bezpečnostních aspektů projektu.
Vizte také oficiální dokumentaci.
Vylepšené možnosti základních funkcí
Ultimate
- Nastavení jedné a více osob pro řešení problému (Multiple Assignees for Issues)
- Závislosti mezi problémy (Related Issues)
-
Pravidla pro
git push
(Push Rules) - Štítky s podúrovní (Scoped Labels)