Пас аз он, ки GitLab кодро мегирад, чӣ мешавад?
sobes.tech AI
Ҷавоб аз AI
GitLab, بعد از دریافت کد (معمولاً از طریق git push)، فرآیندی را آغاز میکند که بسته به تنظیمات پروژه است:
-
Webhookها: هنگام دریافت کد جدید، GitLab میتواند سیستمهای خارجی (مانند سرور CI/CD، سیستم مدیریت پروژه) را با ارسال درخواستهای HTTP مطلع کند. این یک محرک برای اقدامات بعدی است.
-
پایپلاین 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 فعال میشود - بررسی صحت نگارش فایل
-
اقدامات خودکار: GitLab میتواند اقدامات خودکار دیگری انجام دهد:
- ایجاد درخواست ادغام (Merge Request) هنگام push به شاخهای غیر از شاخه هدف.
- بهروزرسانی وضعیت درخواست ادغام (در صورت وجود).
- اجرای اسکنهای امنیتی (در صورت تنظیمات مربوطه).
- بستن یا ارتباط خودکار وظایف (از طریق کلمات کلیدی در کامیتها یا توضیحات درخواست ادغام).
-
سیستم اطلاعرسانی: GitLab اطلاعرسانیها را به کاربران از طریق ایمیل یا کانالهای دیگر (Slack، Mattermost) ارسال میکند، در صورت اشتراک در رویدادهای مخزن (کامیتهای جدید، وضعیتهای پایپلاین، نظرات).
-
بهروزرسانی دادههای مخزن: به صورت داخلی، GitLab دادههای مربوط به مخزن، شاخهها، برچسبها و تاریخچه کامیتها را بهروزرسانی میکند.
کل فرآیند بر روی ادغام کد جدید در روند کاری مشترک، خودکارسازی ساخت، آزمایش و احتمالاً استقرار، و همچنین اطلاعرسانی به ذینفعان متمرکز است.