GitLab kodu aldıqdan sonra nə baş verir?
sobes.tech Süni İntellekt
AI-dan cavab
GitLab, kodu qəbul etdikdə (adətən git push vasitəsilə), layihənin tənzimləmələrindən asılı olaraq, bir proses başlatır:
-
Webhooklar: Yeni kod gəldikdə, GitLab xarici sistemləri (məsələn, CI/CD serverləri, layihə idarəetmə sistemləri) HTTP sorğuları göndərməklə məlumat verə bilər. Bu, növbəti hərəkətlər üçün tetikleyici rolunu oynayır.
-
CI/CD boru xətti: Əgər layihədə
.gitlab-ci.ymlfaylı konfiqurasiya olunubsa, GitLab Runner CI/CD boru xəttini işə salır. Bu proses aşağıdakıları əhatə edir:.gitlab-ci.ymlfaylının sintaksisinin yoxlanması.- Yml faylındakı təriflərə əsasən vəzifələrin (jobs) yaradılması.
- Vəzifələrin mövcud runnerlara təyin olunması.
- Runner vəzifələri alır, depo kodunu yükləyir.
- Hər vəzifə üçün göstərilən əmrləri icra edir (qurmaq, test etmək, yerləşdirmək və s.).
- Artefaktları (qurulmuş tətbiqlər, test hesabatları) və log fayllarını saxlayır.
- Vəzifələrin vəziyyətini GitLab-a geri göndərir.
.gitlab-ci.ymlstrukturuna nümunə:stages: - build - test - deploy build_job: stage: build script: - echo "Tətbiqi qururam..." - make build test_job: stage: test script: - echo "Testləri icra edirəm..." - make test deploy_job: stage: deploy script: - echo "Tətbiqi yerləşdirirəm..." - make deploy only: - main # Yalnız main branch-ə push zamanı tetiklenir -
Avtomatik hərəkətlər: GitLab başqa avtomatik hərəkətləri də edə bilər:
- Merge Request yaradılması (fərqli branch-ə push ediləndə).
- Merge Request-in vəziyyətinin yenilənməsi (əgər mövcuddursa).
- Təhlükəsizlik skanerlərinin işlədilməsi (əgər konfiqurasiya olunubsa).
- Commit-lərdə və ya Merge Request təsvirində açar sözlər vasitəsilə vəzifələrin avtomatik bağlanması və ya əlaqələndirilməsi.
-
Bildiriş sistemi: GitLab istifadəçilərə elektron poçt və ya digər kanallar (Slack, Mattermost) vasitəsilə bildirişlər göndərir, əgər onlar depo hadisələrinə abunə olublarsa (yeni commitlər, boru xətti vəziyyətləri, şərhlər).
-
Depo məlumatlarının yenilənməsi: Daxili olaraq, GitLab depo, branchlər, etiketlər və commit tarixi haqqında məlumatları yeniləyir.
Ümumilikdə, bu proses yeni kodu ümumi iş axışına inteqrasiya etmək, qurma, test və ehtimal ki, yerləşdirməni avtomatlaşdırmaq və maraqlı tərəfləri məlumatlandırmaq məqsədini daşıyır.