GitLab — основе, могућности и CI/CD

Аутор: IT Sectr Објављено: 2026-05-09 Време читања: 8 мин

GitLab — је DevOps платформа отвореног кода која обједињује Git репозиторијум, уграђени CI/CD, регистар контејнера и алате за безбедност у једној апликацији. Основана 2011. године од стране Сида Сјјбранда и Дмитрија Запоројца, платформа нуди како облачни сервис (GitLab.com), тако и самостално издање (Self-Managed) за корпоративна окружења. Према GitLab, 2024, платформу користи преко 30 милиона регистрованих корисника.

Главно

  • GitLab — јединствена DevOps платформа са Git, CI/CD, регистром и безбедношћу из кутије.
  • GitLab CI/CD користи YAML конфигурацију у .gitlab-ci.yml за опис pipeline-а.
  • Self-Managed — могућност инсталације GitLab-а на сопствени сервер без ограничења за ранере.
  • Уграђени Container Registry и Dependency Proxy убрзавају изградњу контејнерских апликација.
  • Security Scanning укључује SAST, DAST, скенирање контејнера и зависности.

Шта је GitLab?

GitLab — је пуноправна DevOps платформа отвореног кода под MIT лиценцом. За разлику од GitHub-а, који повезује различите сервисе кроз интеграције, GitLab пружа јединствени алат за цеокупни животни циклус развоја: од управљања кодом и code review-а до CI/CD, мониторинга, безбедности и постављања. Платформа не захтева спољне сервисе за већину DevOps задатака.

Историја GitLab-а почела је 2011. године као интерни пројекат украјинских програмера. Прва јавна верзија изашла је септембра 2011. године, а 2015. године GitLab је постао први пројекат на GitLab.com, покречући облачни хостинг. 2017. године GitLab је извршио болан, али поучан миграциони процес — преношење целокупне инфраструктуре из Azure-а у Google Cloud, који је преношен уживо и документован у серији чланака.

Архитектура GitLab-а се састоји од три главне компоненте: GitLab Rails (веб апликација у Ruby on Rails), GitLab Shell (обрада Git операција путем SSH) и Gitaly (gRPC сервер за приступ Git подацима). CI/CD се обезбеђује путем GitLab Runner-а — посебне апликације која се инсталира на серверима за изградњу и извршава job-ове у изолованим окружењима (Docker, Kubernetes, VirtualBox).

GitLab CI/CD: pipeline-и и ранери

GitLab CI/CD — је уграђени систем непрекидне интеграције и испоруке, који је кључна предност платформе. За разлику од GitHub Actions, GitLab CI/CD је био уграђен у архитектуру од самог почетка и не захтева посебну конфигурацију: сваки пројекат аутоматски добија CI/CD након додавања датотеке .gitlab-ci.yml у корен репозиторијума.

Pipeline (pipeline) се састоји од фаза (stages) које се извршавају секвенцијално или паралелно: build → test → deploy. Свака фаза садржи један или више job-ова који се извршавају на ранерима. Ако се један job у фази заврши грешком, цела фаза се означава као failed, и следеће фазе се подразумевано не покрећу. У наставку је примјер pipeline-а за мобилни пројекат:

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 подржава више executor (извршилаца): Docker (препоручује се), Kubernetes, SSH, VirtualBox и Parallels. Најпопуларнија опција је Docker извршилац, који покреће сваки job у посебном контејнеру. Runner се може регистровати као специфичан за један пројекат или као заједнички (shared) за целу групу. GitLab.com нуди бесплатне shared ранере са ограничењем од 2000 минута месечно.

Напредне CI/CD могућности

GitLab CI/CD подржава ручно покретање (when: manual), одложено покретање (when: delayed), паралелно извршавање (parallel: 5), матрицу (matrix), динамичке pipeline-е (child pipelines) и вишенивооке pipeline-е (parent-child). Ово омогућава изградњу сложених сценарија: на примјер, динамичко генерисање pipeline-а за сваки модул у монорепозиторијуму или покретање паралелних изградњи за различите Android архитектуре (arm64, x86_64).

GitLab напрама GitHub-у: кључне разлике

GitLab и GitHub — два главна конкурента на тржишту Git платформи, али њихова филозофија и архитектура суштински се разликују. GitHub ставља на отворену заједницу, екосистем интеграција и друштвене функције (форкови, звездице). GitLab се фокусира на свеобухватни DevOps циклус и пружа све алате из кутије: од планирања до мониторинга.

Основна архитектурна разлика: GitLab — је јединствена монолитна апликација коју програмер инсталира у целини. Све функције (CI/CD, Container Registry, Security Scanning, Pages) су уграђене и раде одмах након инсталације. GitHub — је платформа са API-јем, где се већина функција остварује кроз интеграцију са спољним сервисима: Travis CI, CircleCI, Jenkins, SonarQube. Табела испод упоредује кључне карактеристике:

КритеријумGitLabGitHub
CI/CDУграђен, YAML у .gitlab-ci.ymlActions, YAML у .github/workflows
Self-HostedБесплатно (Community Edition)Платно (Enterprise Server)
ЛиценцаMIT (отворени код)Власничка
RegistryContainer + Dependency ProxyPackages (контејнери + пакети)
SecuritySAST, DAST, Fuzzing, Container ScanningDependabot + CodeQL (ограничено)

Избор између GitLab-а и GitHub-а зависи од потреба тима. Ако је приоритет брзо постављање са нултом конфигурацијом и отворена заједница — изаберите GitHub. Ако је потребно пуно управљање инфраструктуром, сопствени хостинг и уграђена безбедност — GitLab је пожељнији. Према анкети Stack Overflow (2024)., GitHub користи 90% програмера, GitLab — 33% (често обе платформе истовремено).

Self-Managed GitLab: инсталација на сопствени сервер

Self-Managed GitLab (раније On-Premises) омогућава инсталацију платформе на сопствени сервер и потпуну контролу над подацима, инфраструктуром и доступношћу. Ово је посебно важно за организације са захтевима ускладности: финансијски сектор, државне установе, медицинске организације, гдје подаци не могу да се чувају на спољним серверима.

Инсталација GitLab-а је подржана на Ubuntu, Debian, CentOS и путем Docker-а. Званични Omnibus пакет укључује све компоненте: веб сервер (NGINX), базу података (PostgreSQL), кеш (Redis), Git процесор (Gitaly) и позадинске процесе. Минимални захтеви: 4 GB RAM и 2 CPU за тим до 100 људи. За велике инсталације са високим оптерећењем препоручује се одвајање компонената на посебне сервере.

bash
# Инсталација GitLab CE на Ubuntu путем Omnibus-а
curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh
sudo bash script.deb.sh

# Инсталација пакета
sudo EXTERNAL_URL="https://gitlab.example.com" apt install gitlab-ce

# Преглед статуса
sudo gitlab-ctl status
sudo gitlab-ctl tail

Self-Managed GitLab нема ограничења CI/CD у минутама — сви ранери припадају организацији, а њихова снага је ограничена само сопственим хардвером. Такође су доступни Geo-репликација за регије, аудит логови, блокада IP-а и интеграција са корпоративним LDAP/SAML провајдерима. GitLab објављује ажурирања сваког месеца (22-ог) са новим функцијама и исправкама безбедности.

Уграђени алати безбедности GitLab-а

Безбедност у GitLab-у је уграђена на нивоу платформе и укључује више скенера који раде у свакој фази pipeline-а. SAST (Static Application Security Testing) анализира изворни код за рањивости без покретања апликације, подржавајући преко 15 језика, укључујући Java, Kotlin, Swift, Python и JavaScript. DAST (Dynamic Application Security Testing) тестира покренуту веб апликацију за рањивости изнутра.

Додатни алати: Container Scanning проверава Docker слике за рањивости у основним слојевима; Dependency Scanning анализира зависности пројекта и упозорава на познате CVE-ове; Secret Detection проналази случајно комитоване API кључеве, лозинке и токене; Fuzz Testing врши аутоматско тестирање са неправилним подацима за проналажење неочигледних грешака. Сви резултати скенирања приказују се у јединственом Security Dashboard-у.

GitLab такође пружа Compliance — алате за поштовање регулаторних захтева. Compliance Dashboard приказује статус усклађености свих пројеката, Audit Events евидентира сваку акцију администратора и програмера, а Compliance Frameworks омогућавају принудно примењивање политика конфигурације за одређене групе пројеката. Ово чини GitLab популарним избором у корпоративним окружењима са строгим захтевима безбедности.

Container Registry и Dependency Proxy

GitLab Container Registry — је уграђени Docker регистар, интегрисан са CI/CD. Након изградње Docker слике у pipeline-у, она се може одмах објавити у Registry коришћећем промењљивих окружења CI_REGISTRY и CI_REGISTRY_USER. Registry подржава pull-through кеширање, таговање, политике чишћења и скенирање рањивости директно у регистру.

Dependency Proxy — механизам за кеширање контејнера и слика из спољних регистара (Docker Hub, Quay, GCR). Када pipeline захтева слику ubuntu:latest, GitLab прво проверава сопствени кеш — ако је слика већ учитана, не преузима се поново. Ово смањује оптерећење на спољним регистрима, убрзава pipeline-е и штити од ограничења брзине Docker Hub-а.

За мобилне програмере GitLab пружа GitLab Pages за хостовање документације и тест извештаја. Након покретања тестова, артефакти (HTML извештаји, слике екрана, логови) могу да се објаве као Pages и добије линк за слање QA тиму. Ово је практичније од преношења извештаја у облачно складиште, јер се све налази у оквиру истог GitLab пројекта.

GitLab API и Webhook-ови

GitLab API (REST и GraphQL) пружа приступ свим ресурсима платформе: пројекти, корисници, pipeline-и, Merge Request, регистар. API се користи за аутоматизацију: креирање пројекта из шаблона, додељивање рецензента, добијање статуса pipeline-а. Webhook-ови омогућавају слање HTTP обавештења у спољне системе при догађајима: push, merge, креирање Issue-а. Webhook-ови се интегришу са Mattermost, Slack, Telegram и унутрашњим системима за мониторинг.

GitLab Pages за мобилну документацију

GitLab Pages аутоматски објављује статичке веб сајтове из репозиторијума. За мобилне пројекте, Pages је погодан за постављање API документације, извештаја о покривености тестова и резултата lint анализе. Објављивање се дешава аутоматски након успешног pipeline-а — довољно је навести у .gitlab-ci.yml deploy корак са објављивањем у Pages. Резултат је доступан на адреси https://namespace.gitlab.io/ime-projekta.

Често постављана питања

Шта је GitLab једноставним речима?

GitLab — је програм за чување кода и аутоматизацију изградње. Програмери преносе код, а GitLab га сам тестира, изградује апликацију и шаље на сервер.

GitLab је бесплатан или платни?

GitLab CE (Community Edition) је потпуно бесплатан са отвореним кодом. GitLab EE (Enterprise Edition) има платне тарифе од 19 долара по кориснику месечно са додатним функцијама безбедности.

По чему се GitLab Runner разликује од pipeline-а?

Runner — је агент који извршава job-ове. Pipeline — је низ job-ова описан у .gitlab-ci.yml. Runner физички покреће код на серверу, а pipeline одређује шта и којим редоследом покретати.

Може ли се репозиторијум пренети из GitHub-а у GitLab?

Да, GitLab пружа уграђени импортер из GitHub, Bitbucket и других платформи. Импорт преноси код, комитове, гране, Issues, Wiki и Pull Request-е са максималним очувањем историје.

Како поставити GitLab CI за iOS пројекат?

За iOS је потребан macOS ранер (физички Mac или Mac у облаку). Pipeline укључује инсталацију Xcode-а, покретање xcodebuild-а за изградњу, покретање тестова и експорт .ipa датотеке за TestFlight.

Резиме

  • GitLab — јединствена DevOps платформа отвореног кода која обједињује Git, CI/CD, безбедност и регистре.
  • GitLab CI/CD описује pipeline-е у .gitlab-ci.yml са подршком за Docker, Kubernetes и матричне изградње.
  • Self-Managed омогућава инсталацију GitLab-а на сопствене сервере без ограничења у минутама и корисницима.
  • Уграђени алати безбедности укључују SAST, DAST, Dependency Scanning и Secret Detection.
  • Container Registry и Dependency Proxy убрзавају изградњу и смањују оптерећење на спољним регистрима.
  • GitLab је пожељнији од GitHub-а за организације којима је потребна потпуна контрола над инфраструктуром и подацима.
  • Почните креирањем пројекта на GitLab.com и додавањем .gitlab-ci.yml — основна конфигурација траје мање од сата времена.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође