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.
.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.- 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.ymlkonfiqurasiyası haqqında məlumat alır. - İ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
- 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. - 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
variablesbölməsində təyin edilməyibsə. - Repository-nin klonlanması (artıq GitLab tərəfindən edilir, lakin Runner
git fetchvə yagit checkoutedə 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.
- İcraçı və ya imicin (executor) təyin edilməsi, əgər boru xəttində və ya
- 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.
- 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_failureayarlanıbsa, növbəti mərhələ başlayır. Əgər tapşırıq xəta ilə tamamlanıb vəallow_failurequrulmayıbsa, bütün boru xətti dayandırılır. - 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 və 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.