Sobes.tech
Middle

GitLab kodu yüklədikdən sonra nə baş verir?

sobes.tech Süni İntellekt

AI-dan cavab

GitLab kodu yüklədikdən sonra, .gitlab-ci.yml faylında müəyyən edilmiş CI/CD boru xəttinin icrası başlayır.

  1. .gitlab-ci.yml-in təhlili: GitLab Runner (və ya daxili CI istifadə olunursa, GitLab özü) .gitlab-ci.yml-dən konfiqurasiyanı oxuyur. Bu fayl mərhələləri (stages) və boru xəttinin tapşırıqları (jobs) haqqında məlumat verir.
  2. Runner-in başlanması: Boru xəttini icra etmək üçün mövcud GitLab Runner təyin edilir. Runner repository, commit, branch və .gitlab-ci.yml konfiqurasiyası haqqında məlumat alır.
  3. İcra mühitinin yaradılması: Runner tapşırıqları yerinə yetirmək üçün mühit hazırlayır. Bu, ola bilər:
    • Virtual maşın
    • Konteyner (Docker, Kubernetes)
    • Ayrılmış server
    • Shell
  4. Mərhələlərin (stages) icrası: Boru xətti .gitlab-ci.yml-də müəyyən edilmiş mərhələlər üzrə ardıcıl icra olunur. Eyni mərhələdəki tapşırıqlar paralel icra oluna bilər.
  5. Tapşırıqların (jobs) icrası: Hər mərhələdə konfiqurasiya olunmuş tapşırıqlar yerinə yetirilir. Tapşırıq aşağıdakıları əhatə edir:
    • İcraçı və ya imicin (executor) təyin edilməsi, əgər boru xəttində və ya variables bölməsində təyin edilməyibsə.
    • Repository-nin klonlanması (artıq GitLab tərəfindən edilir, lakin Runner git fetch və ya git checkout edə bilər).
    • Keşin bərpası (əgər konfiqurasiya olunub) və yükləmənin sürətləndirilməsi (məsələn, asılılıqların yüklənməsi).
    • Skriptlərin icrası (script): Bu, tapşırığın əsas məzmunudur, burada qurma, test, analiz və ya yerləşdirmə komandaları yerinə yetirilir.
    • Artefaktların yüklənməsi (əgər konfiqurasiya olunub): Tapşırığın nəticələri (məsələn, tərtib olunmuş ikili fayllar, hesabatlar) saxlanılır və sonrakı istifadə üçün və ya yükləmə üçün hazırlanır.
    • Keşin saxlanması (əgər konfiqurasiya olunub) və gələcək işlərin sürətləndirilməsi.
  6. Status hesabatı: Runner hər tapşırığın yerinə yetirilmə statusunu (uğurlu, xəta, ləğv) GitLab-ə göndərir. İstifadəçi boru xəttinin irəliləyişi və nəticələrini səhifədə görə bilər.
  7. Növbəti mərhələyə keçid: Əgər hazırkı mərhələdəki bütün tapşırıqlar uğurla tamamlanıbsa və ya allow_failure ayarlanıbsa, növbəti mərhələ başlayır. Əgər tapşırıq xəta ilə tamamlanıb və allow_failure qurulmayıbsa, bütün boru xətti dayandırılır.
  8. Boru xəttinin tamamlanması: Bütün mərhələlər icra edildikdən sonra və ya xəta baş verdikdə, boru xətti tamamlanır. Nəticələr və artefaktlar GitLab-un veb interfeysində mövcuddur.

Misal olaraq, /.gitlab-ci.yml` strukturu:

// Boru xəttinin mərhələlərini müəyyən edir
stages:
  - build
  - test
  - deploy

// Build mərhələsində tapşırıq
build_job:
  stage: build
  image: docker:latest // Docker imici istifadə olunur
  script:
    - echo "Tətbiqi qururam..."
    - docker build -t myapp:$CI_COMMIT_SHORT_SHA . // Docker imici qurulur
  artifacts:
    paths:
      - myapp.tar // Tərtib artefaktı saxlanılır

// Test mərhələsində tapşırıq
test_job:
  stage: test
  image: python:3.9 // Python imici istifadə olunur
  script:
    - echo "Testləri icra edirəm..."
    - pip install -r requirements.txt
    - pytest // Testlər yerinə yetirilir
  needs: ["build_job"] // build_job uğurla tamamlandıqdan sonra icra olunur

// Deploy mərhələsində tapşırıq
deploy_job:
  stage: deploy
  image: ubuntu:latest // Ubuntu imici istifadə olunur
  script:
    - echo "Tətbiqin yerləşdirilməsi..."
    - echo "Yerləşdirmə skripti buraya..." // Yerləşdirmə skripti
  only: // Yalnız master  ya taglar üçün icra olunur
    - master
    - tags
  needs: ["test_job"] // test_job uğurla tamamlandıqdan sonra icra olunur

Beləliklə, kodun yüklənməsi yalnız ilk addımdır, ondan sonra .gitlab-ci.yml konfiqurasiyasına əsaslanan avtomatlaşdırılmış qurma, test və yerləşdirmə prosesi başlayır.