معرفی
«گیتلب» (GitLab) پلتفرمی برای میزبانی مخزنهای Git و مدیریت چرخه تحویل نرمافزار است. تیمها با این ابزار، کد را در پروژههای مشترک نگهداری میکنند، تغییرات را از طریق Merge Request بازبینی مینمایند و ارتباط بین Commit و Issue، تست، Build و استقرار را در محیط یکپارچه دنبال میکنند.
«بخش یکپارچهسازی و تحویل یا استقرار پیوسته» (Continuous Integration and Continuous Delivery/Deployment | CI/CD) به شما امکان میدهد تا مراحل ساخت، تست، تولید Artifact و استقرار را در فایل gitlab-ci.yml. تعریف کنید. هر بار که توسعهدهنده کد را Push میکند یا Merge Request میسازد، گیتلب پایپلاین مربوط را اجرا میکند. اجرای واقعی Job-ها به GitLab Runner نیاز دارد که روی زیرساخت خود تیم یا محیط اجرایی دیگری نصب و پیکربندی میشود.
افراد و تیمهای زیر از گیتلب استفاده میکنند:
مهندسان «دواپس» (DevOps)
توسعهدهندگان بکاند و فرانتاند
تیمهای مدیریت محصول
برای یک تیم کوچک، گیتلب نقطه مرکزی همکاری روی کد محسوب میشود. برای تیمهای بزرگتر، نقش آن به اتصال کنترل نسخه، کنترل کیفیت، انتشار و ردگیری تغییرات در فرایند تحویل نرمافزار گسترش مییابد.
انتخاب GitLab.com یا خودمیزبانی
انتخاب GitLab.com
این گزینه برای تیمی مناسب است که شرایط زیر را دارد:
میخواهد مخزن و CI/CD را بدون اداره سرور گیتلب به سرعت راهاندازی کند.
الزامی برای نگهداری کد در شبکه داخلی ندارد.
امکان استفاده و پرداخت برای سرویس را دارا است.
در این مدل، مدیریت دسترسی اعضا، متغیرهای محرمانه و تنظیمات Runner همچنان بر عهده شما قرار دارد.
انتخاب خودمیزبانی (Self-Hosted)
این روش در موارد زیر توجیه دارد:
سازمان باید کد و دادههای CI/CD را در شبکه اختصاصی خود نگه دارد.
نیاز به Runner-های داخل شبکه خصوصی وجود دارد.
سیاستهای امنیتی سازمان، استفاده از سرویسهای میزبانیشده را منع میکند.
این انتخاب صرفا شامل نصب ساده گیتلب نیست. دستکم یک مسئول فنی باید توانایی انجام امور زیر را داشته باشد:
نگهداری سیستمعامل و پایگاه داده
بهروزرسانی منظم و پشتیبانگیری
اجرای آزمون بازیابی و پایش ظرفیت
رسیدگی به آسیبپذیریهای امنیتی
همچنین برای Runner باید محیط اجرایی پایدار، دسترسی کنترلشده به مخزن و مقصد استقرار، و ظرفیت متناسب با تعداد Job-های همزمان فراهم شود.
ملاحظات دسترسی برای کاربران ایران
استفاده از GitLab.com برای کاربران و سازمانهای مستقر در ایران با محدودیتهای زیر همراه است:
این استفاده تحت تأثیر کنترلهای صادراتی و قوانین جاری GitLab قرار دارد.
پیش از وابسته کردن فرایند تحویل نرمافزار، باید شرایط جاری درباره مناطق مشمول تحریم، حسابهای کاربری و روشهای پرداخت را بررسی کنید.
خودمیزبانی محدودیتهای قراردادی سرویس ابری را برطرف میکند، اما مسئولیت کامل امنیت، نگهداری و پایداری سامانه را به سازمان منتقل میسازد.
مدل انتشار
GitLab با مدل Open-Core عرضه میشود:
بخشهای متنباز و نسخه Community Edition با مجوز متنباز در دسترس قرار دارند.
قابلیتهای Enterprise Edition و بخشهایی از محصول، دارای مجوز اختصاصی هستند.
بنابراین، گیتلب در این صفحه با مدل انتشار اختصاصی دستهبندی میشود، اما نباید آن را محصولی به محیط کامل بسته یا به طور کامل متنباز تلقی کرد.
ویژگیهای کلیدی
موارد زیر تصویری کلی از این بخش برای این ابزار ارائه میکنند.
-
مخزن Git و همکاری روی کد
برای هر پروژه مخزن Git، شاخهها، برچسبها، سطح دسترسی اعضا و تاریخچه تغییرات فراهم میکند تا تیم روی یک نسخه مشترک از کد کار کند.
-
Merge Request و بازبینی کد
تغییرات پیش از ادغام در شاخه اصلی بررسی میشوند. بازبین میتواند روی خطهای مشخص نظر بگذارد، تاییدیه بدهد یا درخواست تغییر کند.
-
پایپلاین GitLab CI/CD
مراحل Build، تست، بستهبندی و استقرار در فایل .gitlab-ci.yml تعریف میشوند و با رویدادهایی مانند Push و Merge Request یا Tag اجرا میشوند.
-
GitLab Runner برای اجرای Job-ها
Runner وظایف پایپلاین را روی ماشین، کانتینر یا زیرساخت اجرایی متصلشده اجرا میکند. تیم میتواند Runner اشتراکی یا اختصاصی داشته باشد.
-
Artifact و گزارش خروجی پایپلاین
خروجیهایی مانند فایل Build، بسته انتشار، گزارش تست و گزارش پوشش کد میتوانند از یک Job به Job-های بعدی یا کاربران مجاز منتقل شوند.
-
مدیریت Issue و برنامهریزی کار
Issue، بردهای کاری، Milestone و برچسبها به تیم کمک میکنند کارهای توسعه را کنار تغییرات کد و Merge Request-ها پیگیری کند.
-
کنترل دسترسی و محافظت از شاخهها
میتوان مشخص کرد چه کسانی حق Push و Merge یا اجرای استقرار روی شاخهها و محیطهای حساس مانند production را دارند.
کاربردها
برای آشنایی بهتر با این ابزار، توجه به موارد زیر میتواند مفید باشد.
-
اجرای تست با هر تغییر کد
تیم توسعه پس از هر Push، وابستگیها را نصب میکند و تستهای واحد یا یکپارچه را اجرا میکند تا خطا پیش از ادغام تغییرات آشکار شود.
-
ساخت و انتشار خودکار سرویس کانتینری
پس از تأیید تغییرات در شاخه اصلی، پایپلاین تصویر Docker میسازد، آن را در رجیستری منتشر میکند و مرحله استقرار را اجرا یا آماده میکند.
-
بازبینی تغییرات پیش از Merge
توسعهدهنده برای یک قابلیت یا رفع خطا Merge Request میسازد تا همکاران کد، نتیجه تستها و تفاوت نسخهها را پیش از ادغام بررسی کنند.
-
ردیابی نسخه قابل استقرار
تیم با Tag و Artifact و وضعیت پایپلاین مشخص میکند کدام Commit ساخته، آزمایش و برای یک محیط مشخص منتشر شده است.
-
مدیریت زیرساخت بهعنوان کد
تغییرات فایلهای Terraform یا Ansible مانند کد برنامه بازبینی میشوند و پس از کنترلهای لازم، برنامهریزی یا اعمال تغییر زیرساخت اجرا میشود.
ابزارهای جایگزین
پرسشهای رایج درباره گیتلب
در این بخش، به تعدادی از پرسشهای رایج درباره این ابزار پاسخ داده شده است.
آیا گیتلب همان Git است؟
خیر، Git ابزار پایه کنترل نسخه است، اما گیتلب پلتفرمی جامع برای میزبانی مخزنهای Git و مدیریت کامل چرخه DevOps محسوب میشود.
برای استفاده از GitLab CI/CD باید برنامهنویس باشم؟
خیر. برای نوشتن و نگهداری پایپلاین معمولا باید Git، ساختار پروژه و فرایند Build و تست را بشناسید. نیاز به خط فرمان به شیوه کار تیم و وظیفه شما بستگی دارد. برای نمونه، کسی که فقط وضعیت پایپلاین را بررسی میکند، لزوما به آن نیاز ندارد.
GitLab Runner چه کاری انجام میدهد؟
Runner عامل اجرایی گیتلب است. وقتی پایپلاین یک Job دارد، Runner آن Job را روی محیطی که به آن دسترسی دارد اجرا میکند؛ مانند یک ماشین مجازی، کانتینر یا سرور اختصاصی.
فایل .gitlab-ci.yml چیست؟
فایلی در مخزن پروژه است که مراحل و Job-های پایپلاین، شرط اجرای آنها، Artifact-ها و محیط اجرایی را تعریف میکند. هر تغییر در آن باید مانند کد برنامه بازبینی شود.
GitLab.com بهتر است یا نصب گیتلب روی سرور سازمان؟
GitLab.com بار نگهداری زیرساخت را کم میکند، اما باید امکان استفاده قانونی، دسترسی شبکه و پرداخت آن را بررسی کنید. خودمیزبانی کنترل بیشتری بر داده و شبکه میدهد، ولی به مسئول مشخص برای بهروزرسانی، پشتیبانگیری، امنیت، پایش و نگهداری Runner نیاز دارد.
آموزشهای مرتبط در فرادرس
-
آموزش گیت Git، گیت هاب و گیت لب (رایگان) + گواهینامه
-
آموزش دواپس DevOps برای توسعه نرم افزار، مقدماتی + گواهینامه
-
آموزش داکر جادی، مفاهیم و شروع کار با Docker (رایگان) + گواهینامه
-
آموزش داکر، مدیریت سرویسهای کانتینری با Docker Swarm + گواهینامه
-
گیت لب چیست؟، از کاربرد تا نحوه استفاده GitLab
-
نصب و پیکربندی GitLab روی دبیان ۹ و اوبونتو ۱۸.۰۴، راهنمای جامع