GitLab — əsaslar, imkanlar və CI/CD

Müəllif: IT Sectr Dərc olunub: 2026-05-09 Oxuma vaxtı: 8 dəq

GitLab — açıq mənbə kodlu DevOps platforması olub, Git repozitoriyasını, daxili CI/CD'ni, konteyner reyestrini və təhlükəsizlik alətlərini vahid proqramda birləşdirir. 2011-ci ildə Sid Sijbrandij və Dmitri Zaporojets tərəfindən təsis edilmiş platforma həm bulud xidməti (GitLab.com), həm də korporativ mühitlər üçün özünüidarə edən versiya (Self-Managed) təklif edir. GitLab, 2024 məlumatlarına görə, platformadan 30 milyondan çox qeydiyyatdan keçmiş istifadəçi istifadə edir.

Əsas məqamlar

  • GitLab — Git, CI/CD, reyestr və təhlükəsizlik ilə vahid DevOps platforması.
  • GitLab CI/CD pipeline'ları təsvir etmək üçün .gitlab-ci.yml faylında YAML konfiqurasiyasından istifadə edir.
  • Self-Managed — GitLab'ı öz serverinə runner məhdudiyyətləri olmadan quraşdırmaq imkanı.
  • Daxili Container Registry və Dependency Proxy konteyner tətbiqlərinin qurulmasını sürətləndirir.
  • Security Scanning SAST, DAST, konteyner və asılılıqların skan edilməsini əhatə edir.

GitLab nədir?

GitLab — MIT lisenziyası altında açıq mənbə kodlu tam hüquqlu DevOps platformasıdır. Müxtəlif xidmətləri inteqrasiyalar vasitəsilə birləşdirən GitHub'dan fərqli olaraq, GitLab inkişafın bütün həyat dövrü üçün vahid alət təqdim edir: kod idarəetməsi və kod baxışından CI/CD, monitorinq, təhlükəsizlik və yerləşdirməyə qədər. Platforma əksər DevOps tapşırıqları üçün üçüncü tərəf xidmətləri tələb etmir.

GitLab'ın tarixi 2011-ci ildə ukraynalı proqramçıların daxili layihəsi kimi başlamışdır. İlk ictimai versiya 2011-ci ilin sentyabrında buraxılmış, 2015-ci ildə isə GitLab GitLab.com saytında ilk layihə olaraq bulud hostinqini işə salmışdır. 2017-ci ildə GitLab ağrılı, lakin ibrətamiz bir miqrasiya prosesi həyata keçirmişdir — bütün infrastrukturun Azure'dan Google Cloud'a köçürülməsi canlı yayımlanmış və bir sıra yazılarda sənədləşdirilmişdir.

GitLab arxitekturası üç əsas komponentdən ibarətdir: GitLab Rails (Ruby on Rails ilə veb tətbiqi), GitLab Shell (SSH vasitəsilə Git əməliyyatlarının işlənməsi) və Gitaly (Git məlumatlarına giriş üçün gRPC serveri). CI/CD GitLab Runner — qurucu serverlərdə quraşdırılan və izolyasiya olunmuş mühitlərdə (Docker, Kubernetes, VirtualBox) işləri yerinə yetirən ayrıca proqram vasitəsilə təmin edilir.

GitLab CI/CD: pipeline'lar və runner'lar

GitLab CI/CD — platformanın əsas üstünlüyü olan daxili fasiləsiz inteqrasiya və çatdırma sistemidir. GitHub Actions'dan fərqli olaraq, GitLab CI/CD lap əvvəldən arxitekturaya daxil edilmişdir və ayrıca konfiqurasiya tələb etmir: hər bir layihə repozitoriyanın kökünə .gitlab-ci.yml faylı əlavə edildikdən sonra avtomatik olaraq CI/CD alır.

Pipeline (pipeline) ardıcıl və ya paralel yerinə yetirilən mərhələlərdən (stages) ibarətdir: build → test → deploy. Hər bir mərhələ runner'larda yerinə yetirilən bir və ya bir neçə iş (job) ehtiva edir. Mərhələdəki bir iş xəta ilə başa çatarsa, bütün mərhələ uğursuz (failed) olaraq qeyd edilir və sonrakı mərhələlər standart olaraq işə salınmır. Aşağıda mobil layihə üçün pipeline nümunəsi verilmişdir:

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 bir neçə executor (icraçı) dəstəkləyir: Docker (tövsiyə olunur), Kubernetes, SSH, VirtualBox və Parallels. Ən populyar variant hər bir işi ayrıca konteynerdə işə salan Docker icraçısıdır. Runner bir layihə üçün spesifik və ya bütün qrup üçün ümumi (shared) olaraq qeydiyyatdan keçirilə bilər. GitLab.com ayda 2000 dəqiqə limiti olan pulsuz shared runner'lar təqdim edir.

CI/CD'nin qabaqcıl imkanları

GitLab CI/CD əl ilə işə salma (when: manual), gecikmiş işə salma (when: delayed), paralel icra (parallel: 5), matris (matrix), dinamik pipeline'lar (child pipelines) və çoxsəviyyəli pipeline'lar (parent-child) dəstəkləyir. Bu, mürəkkəb ssenarilər qurmağa imkan verir: məsələn, monorepozitoriyada hər bir modul üçün dinamik pipeline yaratmaq və ya müxtəlif Android arxitekturaları (arm64, x86_64) üçün paralel qurmalar işə salmaq.

GitLab GitHub'a qarşı: əsas fərqlər

GitLab və GitHub — Git platformaları bazarında iki əsas rəqibdir, lakin onların fəlsəfəsi və arxitekturası prinsipial olaraq fərqlənir. GitHub açıq icmaya, inteqrasiya ekosisteminə və sosial funksiyalara (forklar, ulduzlar) diqqət yetirir. GitLab kompleks DevOps dövrünə fokuslanır və bütün alətləri qutudan çıxan kimi təqdim edir: planlaşdırmadan monitorinqə qədər.

Əsas arxitektura fərqi: GitLab — proqramçının tamamilə quraşdırdığı vahid monolit proqramdır. Bütün funksiyalar (CI/CD, Container Registry, Security Scanning, Pages) daxilidir və quraşdırmadan dərhal sonra işləyir. GitHub — API'si olan platformadır, burada funksiyaların əksəriyyəti üçüncü tərəf xidmətləri ilə inteqrasiya vasitəsilə həyata keçirilir: Travis CI, CircleCI, Jenkins, SonarQube. Aşağıdakı cədvəl əsas xüsusiyyətləri müqayisə edir:

MeyarGitLabGitHub
CI/CDDaxili, .gitlab-ci.yml-də YAMLActions, .github/workflows-da YAML
Self-HostedPulsuz (Community Edition)Ödənişli (Enterprise Server)
LisenziyaMIT (açıq kod)Mülkiyyət
RegistryContainer + Dependency ProxyPackages (konteynerlər + paketlər)
SecuritySAST, DAST, Fuzzing, Container ScanningDependabot + CodeQL (məhdud)

GitLabGitHub arasında seçim komandanın ehtiyaclarından asılıdır. Prioritet sıfır konfiqurasiya ilə sürətli yerləşdirmə və açıq icmadırsa — GitHub'ı seçin. Əgər infrastrukturun tam idarə edilməsi, öz hostinqi və daxili təhlükəsizlik lazımdırsa — GitLab daha üstündür. Stack Overflow sorğusuna (2024) görə, GitHub'dan 90% proqramçı, GitLab'dan isə 33% (çox vaxt hər iki platforma eyni anda) istifadə edir.

Self-Managed GitLab: öz serverinə quraşdırma

Self-Managed GitLab (əvvəlki adı ilə On-Premises) platformanı öz serverinə quraşdırmağa və məlumatlar, infrastruktur və əlçatanlıq üzərində tam nəzarət əldə etməyə imkan verir. Bu, xüsusilə uyğunluq tələbləri olan təşkilatlar üçün vacibdir: maliyyə sektoru, dövlət qurumları, tibb təşkilatları — məlumatların üçüncü tərəf serverlərində saxlanıla bilmədiyi yerlər.

GitLab quraşdırması Ubuntu, Debian, CentOS və Docker vasitəsilə dəstəklənir. Rəsmi Omnibus paketi bütün komponentləri ehtiva edir: veb server (NGINX), məlumat bazası (PostgreSQL), keş (Redis), Git emalçısı (Gitaly) və fon prosesləri. 100 nəfərə qədər komanda üçün minimum tələblər: 4 GB RAM və 2 CPU. Yüksək yükü olan böyük qurğular üçün komponentlərin ayrıca serverlərə bölünməsi tövsiyə olunur.

bash
# GitLab CE-nin Omnibus vasitəsilə Ubuntu-da quraşdırılması
curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh
sudo bash script.deb.sh

# Paketin quraşdırılması
sudo EXTERNAL_URL="https://gitlab.example.com" apt install gitlab-ce

# Statusun yoxlanılması
sudo gitlab-ctl status
sudo gitlab-ctl tail

Self-Managed GitLab'ın CI/CD dəqiqə məhdudiyyəti yoxdur — bütün runner'lar təşkilata məxsusdur və onların gücü yalnız öz avadanlıqla məhdudlaşır. Həmçinin regionlar üçün Geo-replikasiya, audit jurnalları, IP bloklaması və korporativ LDAP/SAML provayderləri ilə inteqrasiya mövcuddur. GitLab hər ayın 22-də yeni funksiyalar və təhlükəsizlik düzəlişləri ilə yeniləmələr buraxır.

GitLab'ın daxili təhlükəsizlik alətləri

GitLab'da təhlükəsizlik platforma səviyyəsində qurulmuşdur və pipeline'ın hər mərhələsində işləyən bir neçə skaner əhatə edir. SAST (Static Application Security Testing) proqramı işə salmadan mənbə kodunu zəifliklər üçün analiz edir, Java, Kotlin, Swift, Python və JavaScript daxil olmaqla 15-dən çox dili dəstəkləyir. DAST (Dynamic Application Security Testing) işləyən veb tətbiqini içəridən zəifliklər üçün test edir.

Əlavə alətlər: Container Scanning Docker şəkillərini əsas qatlardakı zəifliklər üçün yoxlayır; Dependency Scanning layihənin asılılıqlarını analiz edir və məlum CVE-lər barədə xəbərdarlıq edir; Secret Detection təsadüən commit edilmiş API açarları, parollar və tokenlər tapır; Fuzz Testing qeyri-adi səhvləri tapmaq üçün səhv məlumatlarla avtomatik test yerinə yetirir. Bütün skan nəticələri vahid Security Dashboard-da göstərilir.

GitLab həmçinin Compliance — tənzimləyici tələblərə riayət etmək üçün alətlər təqdim edir. Compliance Dashboard bütün layihələrin uyğunluq statusunu göstərir, Audit Events hər bir administrator və proqramçı hərəkətini qeyd edir, Compliance Frameworks isə müəyyən layihə qrupları üçün konfiqurasiya siyasətlərini məcburi tətbiq etməyə imkan verir. Bu, GitLab'ı sərt təhlükəsizlik tələbləri olan korporativ mühitlərdə məşhur seçim edir.

Container Registry və Dependency Proxy

GitLab Container Registry — CI/CD ilə inteqrasiya olunmuş daxili Docker reyestridir. Pipeline'da Docker şəkli qurulduqdan sonra onu dərhal Registry-də CI_REGISTRYCI_REGISTRY_USER mühit dəyişənlərindən istifadə edərək nəşr etmək olar. Registry pull-through keşləmə, etiketləmə, təmizləmə siyasətləri və birbaşa reyestrdə zəiflik skanını dəstəkləyir.

Dependency Proxy — xarici reyestrlərdən (Docker Hub, Quay, GCR) konteynerlərin və şəkillərin keşlənmə mexanizmidir. Pipeline ubuntu:latest şəklini tələb etdikdə, GitLab əvvəlcə öz keşini yoxlayır — şəkil artıq yüklənibsə, təkrar endirilmir. Bu, xarici reyestrlərə yükü azaldır, pipeline'ları sürətləndirir və Docker Hub sürət məhdudiyyətlərindən qoruyur.

Mobil tərtibatçılar üçün GitLab sənədlərin və test hesabatlarının hostinqi üçün GitLab Pages təqdim edir. Testlər işə salındıqdan sonra artefaktları (HTML hesabatlar, ekran görüntüləri, loglar) Pages olaraq nəşr etmək və QA komandasına göndərmək üçün link əldə etmək olar. Bu, hesabatları bulud yaddaşına yükləməkdən daha rahatdır, çünki hər şey eyni GitLab layihəsi çərçivəsində yerləşdirilir.

GitLab API və Webhook'lar

GitLab API (REST və GraphQL) platformanın bütün resurslarına giriş təmin edir: layihələr, istifadəçilər, pipeline'lar, Merge Request, reyestr. API avtomatlaşdırma üçün istifadə olunur: şablondan layihə yaratmaq, rəyçi təyin etmək, pipeline statusunu əldə etmək. Webhook'lar hadisələr zamanı xarici sistemlərə HTTP bildirişləri göndərməyə imkan verir: push, merge, Issue yaradılması. Webhook'lar Mattermost, Slack, Telegram və daxili monitorinq sistemləri ilə inteqrasiya olunur.

Mobil sənədlər üçün GitLab Pages

GitLab Pages repozitoriyadan statik vebsaytları avtomatik nəşr edir. Mobil layihələr üçün Pages API sənədlərini, test əhatə hesabatlarını və lint analiz nəticələrini yerləşdirmək üçün əlverişlidir. Nəşr uğurlu pipeline'dan sonra avtomatik baş verir — .gitlab-ci.yml faylında Pages-də nəşr ilə deploy addımını göstərmək kifayətdir. Nəticə https://namespace.gitlab.io/layihe-adi ünvanında əldə edilə bilər.

Tez-tez verilən suallar

GitLab sadə sözlərlə nədir?

GitLab — kod saxlanması və qurma avtomatlaşdırması üçün proqramdır. Tərtibatçılar kodu yükləyir, GitLab isə onu test edir, tətbiqi qurur və serverə göndərir.

GitLab pulsuzdur yoxsa ödənişli?

GitLab CE (Community Edition) açıq kodlu tamamilə pulsuzdur. GitLab EE (Enterprise Edition) əlavə təhlükəsizlik funksiyaları ilə istifadəçi başına ayda 19 dollardan başlayan ödənişli tariflərə malikdir.

GitLab Runner pipeline'dan nə ilə fərqlənir?

Runner — işləri (jobs) yerinə yetirən agentdir. Pipeline — .gitlab-ci.yml faylında təsvir edilmiş işlərin ardıcıllığıdır. Runner fiziki olaraq serverdə kodu işə salır, pipeline isə nəyin və hansı ardıcıllıqla işə salınacağını müəyyən edir.

Repozitoriyanı GitHub'dan GitLab'a köçürmək olarmı?

Bəli, GitLab GitHub, Bitbucket və digər platformalardan daxili importer təqdim edir. İmport kodu, commitləri, budaqları, Issues, Wiki və Pull Request-ləri maksimum tarixçə qorunması ilə köçürür.

iOS layihəsi üçün GitLab CI necə qurulur?

iOS üçün macOS runner (fiziki Mac və ya buludda Mac) tələb olunur. Pipeline Xcode'un quraşdırılması, qurma üçün xcodebuild-in icrası, testlərin işə salınması və TestFlight üçün .ipa faylının ixracını əhatə edir.

Nəticə

  • GitLab — Git, CI/CD, təhlükəsizlik və reyestrləri birləşdirən vahid açıq kodlu DevOps platforması.
  • GitLab CI/CD pipeline'ları .gitlab-ci.yml faylında Docker, Kubernetes və matris qurmaları dəstəkləyərək təsvir edir.
  • Self-Managed GitLab'ı dəqiqə və istifadəçi məhdudiyyətləri olmadan öz serverlərində quraşdırmağa imkan verir.
  • Daxili təhlükəsizlik alətləri SAST, DAST, Dependency Scanning və Secret Detection əhatə edir.
  • Container RegistryDependency Proxy qurmanı sürətləndirir və xarici reyestrlərə yükü azaldır.
  • GitLab infrastruktur və məlumatlar üzərində tam nəzarətə ehtiyacı olan təşkilatlar üçün GitHub'dan daha üstündür.
  • Başlayın GitLab.com saytında layihə yaratmaqla və .gitlab-ci.yml faylı əlavə etməklə — əsas quraşdırma bir saatdan az çəkir.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun