GitLab — asoslar, imkoniyatlar va CI/CD

Muallif: IT Sectr Nashr etilgan: 2026-05-09 O'qish vaqti: 8 daq

GitLab — ochiq kodli DevOps platformasi bo'lib, Git repozitoriy, o'rnatilgan CI/CD, konteyner reyestri va xavfsizlik vositalarini yagona ilovada birlashtiradi. 2011-yilda Sid Sijbrandij va Dmitriy Zaporojets tomonidan asos solingan platforma bulut xizmati (GitLab.com) va korporativ muhitlar uchun o'zini-o'zi boshqaruvchi versiyani (Self-Managed) taklif etadi. GitLab, 2024 ma'lumotlariga ko'ra, platformadan 30 milliondan ortiq ro'yxatdan o'tgan foydalanuvchi foydalanadi.

Asosiy ma'lumotlar

  • GitLab — Git, CI/CD, reyestr va xavfsizlik bilan yagona DevOps platformasi.
  • GitLab CI/CD pipeline-larni tasvirlash uchun .gitlab-ci.yml da YAML konfiguratsiyasidan foydalanadi.
  • Self-Managed — GitLab'ni o'z serveringizga runner cheklovlarisiz o'rnatish imkoniyati.
  • O'rnatilgan Container Registry va Dependency Proxy konteyner ilovalarini qurishni tezlashtiradi.
  • Security Scanning SAST, DAST, konteyner va bog'liqliklarni skanerlashni o'z ichiga oladi.

GitLab nima?

GitLab — MIT litsenziyasi ostida ochiq kodli to'liq DevOps platformasi. Turli xizmatlarni integratsiyalar orqali birlashtiruvchi GitHub'dan farqli o'laroq, GitLab rivojlanishning butun hayotiy sikli uchun yagona vositani taqdim etadi: kod boshqaruvi va code review'dan CI/CD, monitoring, xavfsizlik va joylashtirishgacha. Platforma aksariyat DevOps vazifalari uchun uchinchi tomon xizmatlarini talab qilmaydi.

GitLab tarixi 2011-yilda ukrainalik dasturchilarning ichki loyihasi sifatida boshlangan. Birinchi ommaviy versiya 2011-yil sentyabrida chiqarilgan, 2015-yilda esa GitLab GitLab.com saytida birinchi loyiha bo'lib, bulut hostingini ishga tushirgan. 2017-yilda GitLab og'riqli, ammo ibratli migratsiya jarayonini amalga oshirdi — butun infratuzilmani Azure'dan Google Cloud'ga ko'chirish jonli efirda namoyish etilgan va bir qator maqolalarda hujjatlashtirilgan.

GitLab arxitekturasi uchta asosiy komponentdan iborat: GitLab Rails (Ruby on Rails'dagi veb-ilova), GitLab Shell (SSH orqali Git operatsiyalarini qayta ishlash) va Gitaly (Git ma'lumotlariga kirish uchun gRPC server). CI/CD GitLab Runner — qurish serverlarida o'rnatiladigan va izolyatsiya qilingan muhitlarda (Docker, Kubernetes, VirtualBox) job-larni bajaruvchi alohida ilova orqali ta'minlanadi.

GitLab CI/CD: pipeline-lar va runner-lar

GitLab CI/CD — platformaning asosiy ustunligi bo'lgan o'rnatilgan uzluksiz integratsiya va yetkazib berish tizimi. GitHub Actions'dan farqli o'laroq, GitLab CI/CD boshidanoq arxitekturaga kiritilgan va alohida sozlashni talab qilmaydi: har bir loyiha repozitoriy ildiziga .gitlab-ci.yml fayli qo'shilgandan so'ng avtomatik ravishda CI/CD oladi.

Pipeline (pipeline) ketma-ket yoki parallel bajariladigan bosqichlardan (stages) iborat: build → test → deploy. Har bir bosqich runner-larda bajariladigan bir yoki bir nechta job-ni o'z ichiga oladi. Agar bosqichdagi bir job xato bilan tugasa, butun bosqich failed deb belgilanadi va keyingi bosqichlar sukut bo'yicha ishga tushirilmaydi. Quyida mobil loyiha uchun pipeline namunasi keltirilgan:

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 nechta executor (ijrochi) ni qo'llab-quvvatlaydi: Docker (tavsiya etiladi), Kubernetes, SSH, VirtualBox va Parallels. Eng ommabop variant har bir job-ni alohida konteynerda ishga tushiruvchi Docker ijrochisidir. Runner bir loyiha uchun xususiy yoki butun guruh uchun umumiy (shared) sifatida ro'yxatdan o'tkazilishi mumkin. GitLab.com oyiga 2000 daqiqa cheklovi bilan bepul shared runner-larni taqdim etadi.

CI/CD ning ilg'or imkoniyatlari

GitLab CI/CD qo'lda ishga tushirish (when: manual), kechiktirilgan ishga tushirish (when: delayed), parallel bajarish (parallel: 5), matritsa (matrix), dinamik pipeline-lar (child pipelines) va ko'p darajali pipeline-lar (parent-child) ni qo'llab-quvvatlaydi. Bu murakkab stsenariylarni qurishga imkon beradi: masalan, monorepozitoriyada har bir modul uchun dinamik pipeline yaratish yoki turli Android arxitekturalari (arm64, x86_64) uchun parallel qurilmalarni ishga tushirish.

GitLab GitHub'ga qarshi: asosiy farqlar

GitLab va GitHub — Git platformalari bozoridagi ikki asosiy raqobatchi, ammo ularning falsafasi va arxitekturasi tubdan farq qiladi. GitHub ochiq jamiyatga, integratsiyalar ekotizimiga va ijtimoiy funksiyalarga (fork-lar, yulduzlar) e'tibor qaratadi. GitLab kompleks DevOps sikliga yo'naltirilgan va barcha vositalarni qutidan chiqqanday taqdim etadi: rejalashtirishdan monitoringgacha.

Asosiy arxitektura farqi: GitLab — dasturchi to'liq o'rnatadigan yagona monolit ilova. Barcha funksiyalar (CI/CD, Container Registry, Security Scanning, Pages) o'rnatilgan va o'rnatishdan so'ng darhol ishlaydi. GitHub — API'ga ega platforma bo'lib, funksiyalarning aksariyati uchinchi tomon xizmatlari bilan integratsiya orqali amalga oshiriladi: Travis CI, CircleCI, Jenkins, SonarQube. Quyidagi jadval asosiy xususiyatlarni taqqoslaydi:

MezonGitLabGitHub
CI/CDO'rnatilgan, .gitlab-ci.yml da YAMLActions, .github/workflows da YAML
Self-HostedBepul (Community Edition)Pullik (Enterprise Server)
LitsenziyaMIT (ochiq kod)Xususiy mulk
RegistryContainer + Dependency ProxyPackages (konteynerlar + paketlar)
SecuritySAST, DAST, Fuzzing, Container ScanningDependabot + CodeQL (cheklangan)

GitLab va GitHub o'rtasidagi tanlov jamoa ehtiyojlariga bog'liq. Agar ustuvorlik nol sozlash bilan tez joylashtirish va ochiq jamiyat bo'lsa — GitHub'ni tanlang. Agar infratuzilmani to'liq boshqarish, o'z hostingi va o'rnatilgan xavfsizlik kerak bo'lsa — GitLab afzalroq. Stack Overflow so'roviga (2024) ko'ra, GitHub'dan 90% dasturchi, GitLab'dan esa 33% (ko'pincha ikkala platforma bir vaqtning o'zida) foydalanadi.

Self-Managed GitLab: o'z serveriga o'rnatish

Self-Managed GitLab (avvalgi On-Premises) platformani o'z serveringizga o'rnatish va ma'lumotlar, infratuzilma va mavjudlik ustidan to'liq nazorat olish imkonini beradi. Bu, ayniqsa, muvofiqlik talablari bo'lgan tashkilotlar uchun muhim: moliya sektori, davlat muassasalari, tibbiyot tashkilotlari — ma'lumotlar uchinchi tomon serverlarida saqlanmaydigan joylar.

GitLab o'rnatilishi Ubuntu, Debian, CentOS va Docker orqali qo'llab-quvvatlanadi. Rasmiy Omnibus paketi barcha komponentlarni o'z ichiga oladi: veb-server (NGINX), ma'lumotlar bazasi (PostgreSQL), kesh (Redis), Git protsessori (Gitaly) va fon jarayonlari. 100 kishigacha bo'lgan jamoa uchun minimal talablar: 4 GB RAM va 2 CPU. Yuqori yuklamali katta o'rnatishlar uchun komponentlarni alohida serverlarga ajratish tavsiya etiladi.

bash
# GitLab CE ni Ubuntu ga Omnibus orqali o'rnatish
curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh
sudo bash script.deb.sh

# Paketni o'rnatish
sudo EXTERNAL_URL="https://gitlab.example.com" apt install gitlab-ce

# Holatni ko'rish
sudo gitlab-ctl status
sudo gitlab-ctl tail

Self-Managed GitLab CI/CD daqiqa chekloviga ega emas — barcha runner-lar tashkilotga tegishli va ularning quvvati faqat o'z jihozlari bilan cheklangan. Shuningdek, hududlar uchun Geo-replikatsiya, audit jurnallari, IP blokirovkasi va korporativ LDAP/SAML provayderlari bilan integratsiya mavjud. GitLab har oyning 22-sanasida yangi funksiyalar va xavfsizlik tuzatishlari bilan yangilanishlarni chiqaradi.

GitLab'ning o'rnatilgan xavfsizlik vositalari

GitLab'da xavfsizlik platforma darajasida o'rnatilgan va pipeline'ning har bir bosqichida ishlaydigan bir nechta skanerni o'z ichiga oladi. SAST (Static Application Security Testing) dasturni ishga tushirmasdan manba kodini zaifliklar uchun tahlil qiladi, Java, Kotlin, Swift, Python va JavaScript ni o'z ichiga olgan 15 dan ortiq tillarni qo'llab-quvvatlaydi. DAST (Dynamic Application Security Testing) ishlayotgan veb-ilovani ichkaridan zaifliklar uchun test qiladi.

Qo'shimcha vositalar: Container Scanning Docker tasvirlarini asosiy qatlamlardagi zaifliklar uchun tekshiradi; Dependency Scanning loyiha bog'liqliklarini tahlil qiladi va ma'lum CVE-lar haqida ogohlantiradi; Secret Detection tasodifan commit qilingan API kalitlari, parollar va tokenlarni topadi; Fuzz Testing noaniq xatolarni topish uchun noto'g'ri ma'lumotlar bilan avtomatik testni amalga oshiradi. Barcha skanerlash natijalari yagona Security Dashboard'da ko'rsatiladi.

GitLab shuningdek Compliance — tartibga solish talablariga rioya qilish vositalarini taqdim etadi. Compliance Dashboard barcha loyihalarning muvofiqlik holatini ko'rsatadi, Audit Events har bir administrator va dasturchi harakatini qayd etadi, Compliance Frameworks esa ma'lum loyiha guruhlari uchun konfiguratsiya siyosatlarini majburiy qo'llash imkonini beradi. Bu GitLab'ni qattiq xavfsizlik talablari bo'lgan korporativ muhitlarda mashhur tanlovga aylantiradi.

Container Registry va Dependency Proxy

GitLab Container Registry — CI/CD bilan integratsiyalashgan o'rnatilgan Docker reyestri. Pipeline'da Docker tasviri qurilgandan so'ng, uni darhol Registry'da CI_REGISTRY va CI_REGISTRY_USER muhit o'zgaruvchilari yordamida nashr etish mumkin. Registry pull-through keshlash, teglash, tozalash siyosatlari va to'g'ridan-to'g'ri reyestrda zaifliklarni skanerlashni qo'llab-quvvatlaydi.

Dependency Proxy — tashqi reyestrlardan (Docker Hub, Quay, GCR) konteynerlar va tasvirlarni keshlash mexanizmi. Pipeline ubuntu:latest tasvirini so'raganda, GitLab avval o'z keshi ni tekshiradi — agar tasvir allaqachon yuklab olingan bo'lsa, qayta yuklanmaydi. Bu tashqi reyestrlardagi yukni kamaytiradi, pipeline-larni tezlashtiradi va Docker Hub tezlik cheklovlaridan himoya qiladi.

Mobil dasturchilar uchun GitLab hujjatlar va test hisobotlarini joylashtirish uchun GitLab Pages ni taqdim etadi. Testlar ishga tushirilgandan so'ng, artefaktlarni (HTML hisobotlar, ekran tasvirlari, loglar) Pages sifatida nashr etish va QA jamoasiga yuborish uchun havola olish mumkin. Bu hisobotlarni bulutli saqlashga yuklashdan qulayroq, chunki hamma narsa bir xil GitLab loyihasi doirasida joylashtiriladi.

GitLab API va Webhook'lar

GitLab API (REST va GraphQL) platformaning barcha resurslariga kirishni ta'minlaydi: loyihalar, foydalanuvchilar, pipeline-lar, Merge Request, reyestr. API avtomatlashtirish uchun ishlatiladi: shablondan loyiha yaratish, taqrizchi tayinlash, pipeline holatini olish. Webhook'lar hodisalar vaqtida tashqi tizimlarga HTTP bildirishnomalarini yuborish imkonini beradi: push, merge, Issue yaratish. Webhook'lar Mattermost, Slack, Telegram va ichki monitoring tizimlari bilan integratsiyalanadi.

Mobil hujjatlar uchun GitLab Pages

GitLab Pages repozitoriyadan statik veb-saytlarni avtomatik nashr etadi. Mobil loyihalar uchun Pages API hujjatlari, test qamrovi hisobotlari va lint tahlil natijalarini joylashtirish uchun qulay. Nashr muvaffaqiyatli pipeline'dan so'ng avtomatik ravishda sodir bo'ladi — .gitlab-ci.yml faylida Pages'da nashr bilan deploy qadamini ko'rsatish kifoya. Natija https://namespace.gitlab.io/loyiha-nomi manzilida mavjud bo'ladi.

Tez-tez so'raladigan savollar

GitLab oddiy so'zlar bilan nima?

GitLab — kod saqlash va qurishni avtomatlashtirish uchun dastur. Dasturchilar kodni yuklaydi, GitLab esa uni sinovdan o'tkazadi, ilovani quradi va serverga yuboradi.

GitLab bepulmi yoki pullikmi?

GitLab CE (Community Edition) ochiq kodli to'liq bepul. GitLab EE (Enterprise Edition) qo'shimcha xavfsizlik funksiyalari bilan foydalanuvchi boshiga oyiga 19 dollardan boshlanadigan pullik tariflarga ega.

GitLab Runner pipeline'dan nima bilan farq qiladi?

Runner — job-larni bajaruvchi agent. Pipeline — .gitlab-ci.yml da tasvirlangan job-lar ketma-ketligi. Runner jismonan serverda kodni ishga tushiradi, pipeline esa nimani va qanday tartibda ishga tushirishni belgilaydi.

Repozitoriyani GitHub'dan GitLab'ga ko'chirish mumkinmi?

Ha, GitLab GitHub, Bitbucket va boshqa platformalardan o'rnatilgan import qiluvchi ni taqdim etadi. Import kod, commit-lar, branch-lar, Issues, Wiki va Pull Request-larni maksimal tarix saqlanishi bilan ko'chiradi.

iOS loyihasi uchun GitLab CI ni qanday sozlash mumkin?

iOS uchun macOS-runner (jismoniy Mac yoki bulutdagi Mac) talab qilinadi. Pipeline Xcode'ni o'rnatish, qurish uchun xcodebuild ni bajarish, testlarni ishga tushirish va TestFlight uchun .ipa faylini eksport qilishni o'z ichiga oladi.

Xulosa

  • GitLab — Git, CI/CD, xavfsizlik va reyestrlarni birlashtiruvchi yagona ochiq kodli DevOps platformasi.
  • GitLab CI/CD pipeline-larni .gitlab-ci.yml da Docker, Kubernetes va matritsali qurilmalarni qo'llab-quvvatlab tasvirlaydi.
  • Self-Managed GitLab'ni daqiqa va foydalanuvchi cheklovlarisiz o'z serverlarida o'rnatishga imkon beradi.
  • O'rnatilgan xavfsizlik vositalari SAST, DAST, Dependency Scanning va Secret Detection ni o'z ichiga oladi.
  • Container Registry va Dependency Proxy qurilishni tezlashtiradi va tashqi reyestrlardagi yukni kamaytiradi.
  • GitLab infratuzilma va ma'lumotlar ustidan to'liq nazoratga muhtoj tashkilotlar uchun GitHub'dan afzal.
  • Boshlang GitLab.com da loyiha yaratib va .gitlab-ci.yml qo'shib — asosiy sozlash bir soatdan kam vaqt oladi.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing