Sobes.tech
Middle

Пас аз он, ки GitLab кодро мегирад, чӣ мешавад?

sobes.tech AI

Ҷавоб аз AI

GitLab, بعد از دریافت کد (معمولاً از طریق git push)، فرآیندی را آغاز می‌کند که بسته به تنظیمات پروژه است:

  1. Webhookها: هنگام دریافت کد جدید، GitLab می‌تواند سیستم‌های خارجی (مانند سرور CI/CD، سیستم مدیریت پروژه) را با ارسال درخواست‌های HTTP مطلع کند. این یک محرک برای اقدامات بعدی است.

  2. پایپ‌لاین CI/CD: اگر فایل .gitlab-ci.yml در پروژه تنظیم شده باشد، GitLab Runner پایپ‌لاین CI/CD را اجرا می‌کند. این فرآیند شامل:

    • بررسی صحت نگارش فایل .gitlab-ci.yml.
    • ایجاد وظایف (jobs) بر اساس تعاریف در فایل yml.
    • اختصاص وظایف به رانرهای در دسترس.
    • رانر وظایف را دریافت کرده، کد منبع مخزن را دانلود می‌کند.
    • دستورات مشخص شده برای هر وظیفه (ساخت، آزمایش، استقرار و غیره) را اجرا می‌کند.
    • ذخیره آثار (برنامه‌های ساخته شده، گزارش‌های آزمایش) و فایل‌های لاگ.
    • ارسال وضعیت اجرای وظایف به GitLab.

    نمونه ساختار .gitlab-ci.yml:

    stages:
      - build
      - test
      - deploy
    
    build_job:
      stage: build
      script:
        - echo "Building the application..."
        - make build
    
    test_job:
      stage: test
      script:
        - echo "Running tests..."
        - make test
    
    deploy_job:
      stage: deploy
      script:
        - echo "Deploying the application..."
        - make deploy
      only:
        - main  # فقط در صورت push به شاخه main فعال می‌شود
    
  3. اقدامات خودکار: GitLab می‌تواند اقدامات خودکار دیگری انجام دهد:

    • ایجاد درخواست ادغام (Merge Request) هنگام push به شاخه‌ای غیر از شاخه هدف.
    • به‌روزرسانی وضعیت درخواست ادغام (در صورت وجود).
    • اجرای اسکن‌های امنیتی (در صورت تنظیمات مربوطه).
    • بستن یا ارتباط خودکار وظایف (از طریق کلمات کلیدی در کامیت‌ها یا توضیحات درخواست ادغام).
  4. سیستم اطلاع‌رسانی: GitLab اطلاع‌رسانی‌ها را به کاربران از طریق ایمیل یا کانال‌های دیگر (Slack، Mattermost) ارسال می‌کند، در صورت اشتراک در رویدادهای مخزن (کامیت‌های جدید، وضعیت‌های پایپ‌لاین، نظرات).

  5. به‌روزرسانی داده‌های مخزن: به صورت داخلی، GitLab داده‌های مربوط به مخزن، شاخه‌ها، برچسب‌ها و تاریخچه کامیت‌ها را به‌روزرسانی می‌کند.

کل فرآیند بر روی ادغام کد جدید در روند کاری مشترک، خودکارسازی ساخت، آزمایش و احتمالاً استقرار، و همچنین اطلاع‌رسانی به ذینفعان متمرکز است.