GitLab — je open-source DevOps platforma, která kombinuje Git repozitář, vestavěný CI/CD, registr kontejnerů a bezpečnostní nástroje v jedné aplikaci. Založena v roce 2011 Sidem Sijbrandijem a Dmitrijem Zaporozhec, platforma nabízí jak cloudovou službu (GitLab.com), tak samostatně spravovanou verzi (Self-Managed) pro podniková prostředí. Podle údajů GitLab, 2024, platformu používá přes 30 milionů registrovaných uživatelů.
Hlavní body
GitLab — je plnohodnotná open-source DevOps platforma pod licencí MIT. Na rozdíl od GitHubu, který kombinuje různé služby prostřednictvím integrací, GitLab poskytuje jediný nástroj pro celý životní cyklus vývoje: od správy kódu a code review až po CI/CD, monitorování, bezpečnost a nasazení. Platforma nevyžaduje služby třetích stran pro většinu úkolů DevOps.
Historie GitLabu začala v roce 2011 jako interní projekt ukrajinských vývojářů. První veřejná verze vyšla v září 2011 a v roce 2015 se GitLab stal prvním projektem na GitLab.com a spustil cloudový hosting. V roce 2017 GitLab provedl bolestivý, ale poučný migrační proces — přesun celé infrastruktury z Azure do Google Cloud, který byl živě vysílán a zdokumentován v sérii příspěvků.
Architektura GitLabu se skládá ze tří hlavních komponent: GitLab Rails (webová aplikace v Ruby on Rails), GitLab Shell (zpracování Git operací přes SSH) a Gitaly (gRPC server pro přístup k Git datům). CI/CD je zajištěn prostřednictvím GitLab Runner — samostatné aplikace, která se instaluje na build serverech a provádí joby v izolovaných prostředích (Docker, Kubernetes, VirtualBox).
GitLab CI/CD — je vestavěný systém kontinuální integrace a doručování, který je klíčovou výhodou platformy. Na rozdíl od GitHub Actions, GitLab CI/CD byl zabudován do architektury od samého počátku a nevyžaduje samostatné nastavení: každý projekt automaticky získá CI/CD po přidání souboru .gitlab-ci.yml do kořene repozitáře.
Pipeline (pipeline) se skládá z fází (stages), které se provádějí sekvenčně nebo paralelně: build → test → deploy. Každá fáze obsahuje jeden nebo více jobů, které se provádějí na runnerech. Pokud jeden job ve fázi skončí chybou, celá fáze je označena jako failed a následující fáze se standardně nespouštějí. Níže je uveden příklad pipeline pro mobilní projekt:
# .gitlab-ci.yml
stages:
- build
- test
- deploy
build-android:
stage: build
image: openjdk:17-jdk
script:
- ./gradlew assembleDebug
artifacts:
paths:
- app/build/outputs/
unit-tests:
stage: test
script:
- ./gradlew testDebugUnitTest
deploy-firebase:
stage: deploy
script:
- firebase appdistribution:distribute app.apk
GitLab Runner podporuje několik executor (vykonavatelů): Docker (doporučeno), Kubernetes, SSH, VirtualBox a Parallels. Nejoblíbenější variantou je Docker vykonavatel, který spouští každý job v samostatném kontejneru. Runner lze zaregistrovat jako specifický pro jeden projekt nebo jako sdílený (shared) pro celou skupinu. GitLab.com poskytuje zdarma sdílené runnery s omezením 2000 minut měsíčně.
GitLab CI/CD podporuje ruční spuštění (when: manual), odložené spuštění (when: delayed), paralelní provádění (parallel: 5), matici (matrix), dynamické pipeline (child pipelines) a víceúrovňové pipeline (parent-child). To umožňuje budovat komplexní scénáře: například dynamicky generovat pipeline pro každý modul v monorepozitáři nebo spouštět paralelní sestavení pro různé architektury Android (arm64, x86_64).
GitLab a GitHub — dva hlavní konkurenti na trhu Git platforem, ale jejich filozofie a architektura se zásadně liší. GitHub sází na otevřenou komunitu, ekosystém integrací a sociální funkce (forky, hvězdičky). GitLab se zaměřuje na komplexní DevOps cyklus a poskytuje všechny nástroje z krabice: od plánování po monitorování.
Hlavní architektonický rozdíl: GitLab — je jednolitá monolitická aplikace, kterou vývojář instaluje jako celek. Všechny funkce (CI/CD, Container Registry, Security Scanning, Pages) jsou vestavěné a fungují ihned po instalaci. GitHub — je platforma s API, kde je většina funkcí realizována prostřednictvím integrace se službami třetích stran: Travis CI, CircleCI, Jenkins, SonarQube. Níže uvedená tabulka porovnává klíčové charakteristiky:
| Kritérium | GitLab | GitHub |
|---|---|---|
| CI/CD | Vestavěný, YAML v .gitlab-ci.yml | Actions, YAML v .github/workflows |
| Self-Hosted | Zdarma (Community Edition) | Placené (Enterprise Server) |
| Licence | MIT (open source) | Proprietární |
| Registry | Container + Dependency Proxy | Packages (kontejnery + balíčky) |
| Security | SAST, DAST, Fuzzing, Container Scanning | Dependabot + CodeQL (omezeně) |
Výběr mezi GitLabem a GitHubem závisí na potřebách týmu. Pokud je prioritou rychlé nasazení s nulovou konfigurací a otevřená komunita — zvolte GitHub. Pokud je potřeba úplná správa infrastruktury, vlastní hosting a vestavěná bezpečnost — GitLab je výhodnější. Podle průzkumu Stack Overflow (2024) používá GitHub 90 % vývojářů, GitLab — 33 % (často obě platformy současně).
Self-Managed GitLab (dříve On-Premises) umožňuje nainstalovat platformu na vlastní server a získat úplnou kontrolu nad daty, infrastrukturou a dostupností. To je důležité zejména pro organizace s požadavky na shodu: finanční sektor, státní instituce, zdravotnické organizace, kde data nelze ukládat na serverech třetích stran.
Instalace GitLabu je podporována na Ubuntu, Debian, CentOS a prostřednictvím Dockeru. Oficiální Omnibus balíček obsahuje všechny komponenty: webový server (NGINX), databázi (PostgreSQL), cache (Redis), procesor Git (Gitaly) a procesy na pozadí. Minimální požadavky: 4 GB RAM a 2 CPU pro tým do 100 lidí. Pro velké instalace s vysokou zátěží se doporučuje oddělení komponent na samostatné servery.
# Instalace GitLab CE na Ubuntu přes Omnibus
curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh
sudo bash script.deb.sh
# Instalace balíčku
sudo EXTERNAL_URL="https://gitlab.example.com" apt install gitlab-ce
# Zobrazení stavu
sudo gitlab-ctl status
sudo gitlab-ctl tail
Self-Managed GitLab nemá omezení na minuty CI/CD — všechny runnery patří organizaci a jejich výkon je omezen pouze vlastním hardwarem. Také jsou k dispozici Geo-replikace pro regiony, auditní logy, blokování IP a integrace s podnikovými LDAP/SAML poskytovateli. GitLab vydává aktualizace každý měsíc (22. dne) s novými funkcemi a bezpečnostními opravami.
Bezpečnost v GitLabu je vestavěna na úrovni platformy a zahrnuje několik skenerů pracujících v každé fázi pipeline. SAST (Static Application Security Testing) analyzuje zdrojový kód na přítomnost zranitelností bez spuštění aplikace a podporuje přes 15 jazyků včetně Java, Kotlin, Swift, Python a JavaScript. DAST (Dynamic Application Security Testing) testuje běžící webovou aplikaci na zranitelnosti zevnitř.
Další nástroje: Container Scanning kontroluje Docker obrazy na zranitelnosti v základních vrstvách; Dependency Scanning analyzuje závislosti projektu a varuje před známými CVE; Secret Detection nachází náhodně zkomitované API klíče, hesla a tokeny; Fuzz Testing provádí automatické testování s neplatnými daty pro nalezení nečekaných chyb. Všechny výsledky skenování jsou zobrazeny v jednotném Security Dashboard.
GitLab také poskytuje Compliance — nástroje pro dodržování regulatorních požadavků. Compliance Dashboard zobrazuje stav shody všech projektů, Audit Events protokoluje každou akci administrátora a vývojáře a Compliance Frameworks umožňují vynuceně aplikovat konfigurační politiky pro určité skupiny projektů. To dělá z GitLabu populární volbu v podnikových prostředích s přísnými bezpečnostními požadavky.
GitLab Container Registry — je vestavěný Docker registr integrovaný s CI/CD. Po sestavení Docker obrazu v pipeline jej lze okamžitě publikovat v Registry pomocí proměnných prostředí CI_REGISTRY a CI_REGISTRY_USER. Registry podporuje pull-through cache, tagování, politiky čištění a skenování zranitelností přímo v registru.
Dependency Proxy — mechanismus cache kontejnerů a obrazů z externích registrů (Docker Hub, Quay, GCR). Když pipeline požaduje obraz ubuntu:latest, GitLab nejprve zkontroluje svou cache — pokud je obraz již načten, nestahuje se znovu. To snižuje zatížení externích registrů, urychluje pipeline a chrání před rate limity Docker Hub.
Pro mobilní vývojáře GitLab poskytuje GitLab Pages pro hosting dokumentace a testovacích zpráv. Po provedení testů lze artefakty (HTML zprávy, screenshoty, logy) publikovat jako Pages a získat odkaz pro odeslání QA týmu. To je pohodlnější než nahrávání zpráv do cloudového úložiště, protože vše je umístěno v rámci stejného GitLab projektu.
GitLab API (REST a GraphQL) poskytuje přístup ke všem zdrojům platformy: projekty, uživatelé, pipeline, Merge Request, registr. API se používá k automatizaci: vytvoření projektu ze šablony, jmenování recenzenta, získání stavu pipeline. Webhooky umožňují odesílat HTTP oznámení do externích systémů při událostech: push, merge, vytvoření Issue. Webhooky se integrují s Mattermost, Slack, Telegram a interními monitorovacími systémy.
GitLab Pages automaticky publikuje statické weby z repozitáře. Pro mobilní projekty jsou Pages vhodné pro umístění API dokumentace, zpráv o pokrytí testy a výsledků lint analýzy. Publikace probíhá automaticky po úspěšném pipeline — staāí v .gitlab-ci.yml určit krok deploy s publikací do Pages. Výsledek je dostupný na adrese https://namespace.gitlab.io/nazev-projektu.
Často kladené otázky
GitLab — je program pro ukládání kódu a automatizaci sestavení. Vývojáři nahrají kód a GitLab jej otestuje, sestaví aplikaci a odešle na server.
GitLab CE (Community Edition) je zcela zdarma s otevřeným kódem. GitLab EE (Enterprise Edition) má placené tarify od 19 dolarů za uživatele měsíčně s dalšími bezpečnostními funkcemi.
Runner — je agent, který provádí joby. Pipeline — je posloupnost jobů popsaná v .gitlab-ci.yml. Runner fyzicky spouští kód na serveru, zatímco pipeline určuje, co a v jakém pořadí spustit.
Ano, GitLab poskytuje vestavěný importér z GitHubu, Bitbucketu a dalších platforem. Import přenáší kód, commity, větve, Issues, Wiki a Pull Requesty s maximálním zachováním historie.
Pro iOS je vyžadován macOS runner (fyzický Mac nebo Mac v cloudu). Pipeline zahrnuje instalaci Xcode, provedení xcodebuild pro sestavení, spuštění testů a export .ipa souboru pro TestFlight.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také