Sobes.tech
Middle

GitLab kodni yuklab olgach nima bo'ladi?

sobes.tech AI

AIdan javob

GitLab kodni ishga tushirish uchun ishchi katalogga yuklab olgach, .gitlab-ci.yml faylida belgilangan CI/CD pipeline ishga tushadi.

  1. .gitlab-ci.yml Faylini Tahlil qilish: GitLab Runner (yoki GitLab, agar ichki CI ishlatilayotgan bo‘lsa) .gitlab-ci.yml dan konfiguratsiyani o‘qiydi. Bu fayl pipeline ning bosqichlari (stages) va vazifalarini (jobs) tavsiflaydi.
  2. Runnerni Ishga Tushurish: Pipeline ni bajarish uchun mavjud bo‘lgan GitLab Runner tayinlanadi. Runner repository, commit, branch va .gitlab-ci.yml konfiguratsiyasi haqida ma'lumot oladi.
  3. Ishga Tushurish Muhitini Yaratish: Runner vazifalarni bajarish uchun muhit tayyorlaydi. Bu quyidagilar bo‘lishi mumkin:
    • Virtual mashina
    • Konteyner (Docker, Kubernetes)
    • Ajratilgan server
    • Shell
  4. Bosqichlarni (stages) Ishga Tushurish: Pipeline .gitlab-ci.yml da belgilangan bosqichlar bo‘yicha ketma-ket bajariladi. Bir bosqichdagi vazifalar parallel ravishda bajarilishi mumkin.
  5. Vazifalarni (jobs) Bajarish: Har bir bosqichda, sozlangan vazifalar bajariladi. Vazifa quyidagilarni o‘z ichiga oladi:
    • Imij yoki executor (executor) ta'rifi, agar pipeline yoki variables bo‘limida belgilangan bo‘lmasa.
    • Repository klonlash (GitLab tomonidan allaqachon bajarilgan, lekin Runner git fetch yoki git checkout ni bajarishi mumkin, kerakli holat uchun).
    • Cache ni tiklash (agar sozlangan bo‘lsa), build ni tezlashtirish uchun (masalan, dependencies ni yuklash).
    • Skriptlarni bajarish (script): Bu vazifaning asosiy mazmuni bo‘lib, unda build, test, tahlil yoki deploy buyruqlari bajariladi.
    • Artefaktlarni yuklash (agar sozlangan bo‘lsa): Vazifa natijalari (masalan, kompilyatsiya qilingan binarlar, hisobotlar) keyingi foydalanish yoki yuklab olish uchun saqlanadi.
    • Cache ni saqlash (agar sozlangan bo‘lsa), kelajakdagi ishlarni tezlashtirish uchun.
  6. Status Hisoboti: Runner har bir vazifaning holatini (muvaffaqiyatli, xato, bekor qilish) GitLab ga yuboradi. Foydalanuvchi pipeline sahifasida progress va natijalarni ko‘radi.
  7. Keyingi bosqichga o‘tish: Agar joriy bosqichdagi barcha vazifalar muvaffaqiyatli yakunlangan bo‘lsa (yoki allow_failure sozlangan bo‘lsa), keyingi bosqich boshlanadi. Agar vazifa xato bilan yakunlansa va allow_failure o‘rnatilmagan bo‘lsa, butun pipeline to‘xtatiladi.
  8. Pipeline ni Yakunlash: Barcha bosqichlar bajarilgach (yoki xato holatida), pipeline yakunlanadi. Natijalar va artefaktlar GitLab ning veb-interfeysida mavjud bo‘ladi.

.gitlab-ci.yml ning tuzilmasi misoli:

// Pipeline bosqichlarini belgilash
stages:
  - build
  - test
  - deploy

// build bosqichidagi vazifa
build_job:
  stage: build
  image: docker:latest // Docker imiji ishlatiladi
  script:
    - echo "Ilovani qurish..."
    - docker build -t myapp:$CI_COMMIT_SHORT_SHA . // Docker imijini qurish
  artifacts:
    paths:
      - myapp.tar // Qurilish artefaktini saqlash

// test bosqichidagi vazifa
test_job:
  stage: test
  image: python:3.9 // Python imiji ishlatiladi
  script:
    - echo "Testlarni bajarish..."
    - pip install -r requirements.txt
    - pytest // Testlarni bajarish
  needs: ["build_job"] // build_job muvaffaqiyatli yakunlanishiga bog‘liq

// deploy bosqichidagi vazifa
deploy_job:
  stage: deploy
  image: ubuntu:latest // Ubuntu imiji ishlatiladi
  script:
    - echo "Ilovani joylashtirish..."
    - echo "Bu yerda deploy skripti bo‘ladi..." // Deploy skripti
  only: // Faqat master yoki teglar bilan ishga tushadi
    - master
    - tags
  needs: ["test_job"] // test_job muvaffaqiyatli yakunlanishiga bog‘liq

Shunday qilib, kodni yuklab olish faqat birinchi qadam bo‘lib, undan keyin .gitlab-ci.yml konfiguratsiyasiga asoslangan murakkab avtomatlashtirilgan build, test va deploy jarayoni boshlanadi.