Sobes.tech
Middle

GitLab kodni olgach nima bo'ladi?

sobes.tech AI

AIdan javob

GitLab, kodni olganda (odatda git push orqali), loyiha sozlamalariga bog‘liq bo‘lgan jarayonni boshlaydi:

  1. Webhooklar: Yangi kod kelganda, GitLab tashqi tizimlarni (masalan, CI/CD serverlari, loyiha boshqaruv tizimlari) HTTP so‘rovlarini yuborish orqali xabar qilishi mumkin. Bu keyingi harakatlar uchun trigger bo‘lib xizmat qiladi.

  2. CI/CD pipeline: Agar loyiha .gitlab-ci.yml faylini sozlagan bo‘lsa, GitLab Runner CI/CD pipeline’ni boshlaydi. Bu jarayon quyidagilarni o‘z ichiga oladi:

    • .gitlab-ci.yml faylining sintaksisini tekshirish.
    • Yml faylidagi ta’riflarga asoslangan vazifalarni (jobs) yaratish.
    • Vazifalarni mavjud runnerlarga tayinlash.
    • Runner vazifalarni oladi, repository ning manba kodini yuklab oladi.
    • Har bir vazifa uchun belgilangan buyruqlarni bajaradi (qurish, test qilish, joylashtirish va boshqalar).
    • Artefaktlarni (qurilgan ilovalar, test hisobotlari) va log fayllarini saqlash.
    • Vazifa holatini GitLabga yuborish.

    .gitlab-ci.yml tuzilmasiga misol:

    stages:
      - build
      - test
      - deploy
    
    build_job:
      stage: build
      script:
        - echo "Ilovani qurish..."
        - make build
    
    test_job:
      stage: test
      script:
        - echo "Testlarni bajarish..."
        - make test
    
    deploy_job:
      stage: deploy
      script:
        - echo "Ilovani joylashtirish..."
        - make deploy
      only:
        - main  # Faqat main branchga push qilinsa trigger bo‘ladi
    
  3. Avtomatik harakatlar: GitLab boshqa avtomatik harakatlarni ham bajarishi mumkin:

    • Merge Request yaratish (farkli branchga push qilinsa).
    • Merge Request holatini yangilash (agar mavjud bo‘lsa).
    • Xavfsizlik skanerlashlarini boshlash (agar sozlangan bo‘lsa).
    • Commitlar yoki Merge Request tavsifidagi kalit so‘zlar orqali vazifalarni avtomatik yopish yoki bog‘lash.
  4. Bildirishnoma tizimi: GitLab foydalanuvchilarga elektron pochta yoki boshqa kanallar (Slack, Mattermost) orqali bildirishlar yuboradi, agar ular repository voqealariga obuna bo‘lishgan bo‘lsa (yangi commitlar, pipeline holatlari, izohlar).

  5. Repository ma’lumotlarini yangilash: Ichki tizimda, GitLab repository, branchlar, teglar va commit tarixini yangilaydi.

Umuman olganda, bu jarayon yangi kodni umumiy ish jarayoniga integratsiya qilish, qurish, test qilish va ehtimol, joylashtirishni avtomatlashtirish, shuningdek, manfaatdor tomonlarni xabardor qilishga qaratilgan.