GitLab — základy, možnosti a CI/CD

Autor: IT Sectr Publikováno: 2026-05-09 Doba čtení: 8 min

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 — jedna DevOps platforma s Gitem, CI/CD, registrem a bezpečností z krabice.
  • GitLab CI/CD používá YAML konfiguraci v .gitlab-ci.yml k popisu pipeline.
  • Self-Managed — možnost instalovat GitLab na vlastní server bez omezení runnerů.
  • Vestavěný Container Registry a Dependency Proxy urychlují sestavení kontejnerových aplikací.
  • Security Scanning zahrnuje SAST, DAST, skenování kontejnerů a závislostí.

Co je GitLab?

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: pipeline a runner

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:

yaml
# .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ě.

Pokročilé možnosti CI/CD

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 vs GitHub: klíčové rozdíly

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ériumGitLabGitHub
CI/CDVestavěný, YAML v .gitlab-ci.ymlActions, YAML v .github/workflows
Self-HostedZdarma (Community Edition)Placené (Enterprise Server)
LicenceMIT (open source)Proprietární
RegistryContainer + Dependency ProxyPackages (kontejnery + balíčky)
SecuritySAST, DAST, Fuzzing, Container ScanningDependabot + 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: instalace na vlastní server

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.

bash
# 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.

Vestavěné bezpečnostní nástroje GitLab

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.

Container Registry a Dependency Proxy

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 a Webhooky

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 pro mobilní dokumentaci

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

Co je GitLab jednoduchými slovy?

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.

Je GitLab zdarma nebo placený?

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.

Čím se liší GitLab Runner od pipeline?

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.

Lze přenést repozitář z GitHubu do GitLabu?

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.

Jak nastavit GitLab CI pro iOS projekt?

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í

  • GitLab — jedna open-source DevOps platforma spojující Git, CI/CD, bezpečnost a registry.
  • GitLab CI/CD popisuje pipeline v .gitlab-ci.yml s podporou Dockeru, Kubernetes a maticových sestavení.
  • Self-Managed umožňuje instalovat GitLab na vlastní servery bez omezení minut a uživatelů.
  • Vestavěné bezpečnostní nástroje zahrnují SAST, DAST, Dependency Scanning a Secret Detection.
  • Container Registry a Dependency Proxy urychlují sestavení a snižují zatížení externích registrů.
  • GitLab je výhodnější než GitHub pro organizace, které potřebují úplnou kontrolu nad infrastrukturou a daty.
  • Začněte vytvořením projektu na GitLab.com a přidáním .gitlab-ci.yml — základní nastavení zabere méně než hodinu.

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í.

Prodiskutovat projekt

Přečtěte si také