GitLab — بنیادی باتیں، خصوصیات اور CI/CD

مصنف: IT Sectr اشاعت: 2026-05-09 مطالعے کا وقت: 8 منٹ

GitLab — ایک اوپن سورس DevOps پلیٹ فارم ہے جو Git ریپوزٹری، بلٹ ان CI/CD، کنٹینر رجسٹری اور سیکیورٹی ٹولز کو ایک ایپلیکیشن میں یکجا کرتا ہے۔ 2011 میں Sid Sijbrandij اور Dmitriy Zaporozhets کے ذریعے قائم کیا گیا، یہ پلیٹ فارم انٹرپرائز ماحول کے لیے کلاؤڈ سروس (GitLab.com) اور خود انتظامی ورژن (Self-Managed) دونوں فراہم کرتا ہے۔ GitLab، 2024 کے مطابق، پلیٹ فارم 30 ملین سے زیادہ رجسٹرڈ صارفین استعمال کرتے ہیں۔

اہم نکات

  • GitLab — Git، CI/CD، رجسٹری اور سیکیورٹی کے ساتھ باکس سے باہر تیار ایک متحد DevOps پلیٹ فارم۔
  • GitLab CI/CD پائپ لائنز کی وضاحت کے لیے .gitlab-ci.yml میں YAML کنفیگریشن استعمال کرتا ہے۔
  • Self-Managed — بغیر کسی رنر کی حدود کے اپنے سرور پر GitLab انسٹال کرنے کی صلاحیت۔
  • بلٹ ان Container Registry اور Dependency Proxy کنٹینر ایپلیکیشن بلڈ کو تیز کرتے ہیں۔
  • Security Scanning میں SAST، DAST، کنٹینر اسکیننگ اور ڈیپنڈنسی اسکیننگ شامل ہے۔

GitLab کیا ہے؟

GitLab — MIT لائسنس کے تحت ایک مکمل خصوصیات والا اوپن سورس DevOps پلیٹ فارم ہے۔ GitHub کے برعکس، جو انٹیگریشنز کے ذریعے مختلف خدمات کو یکجا کرتا ہے، GitLab ڈیولپمنٹ لائف سائیکل کے لیے ایک ہی ٹول فراہم کرتا ہے: کوڈ مینجمنٹ اور کوڈ ریویو سے CI/CD، مانیٹرنگ، سیکیورٹی اور ڈپلائمنٹ تک۔ پلیٹ فارم کو زیادہ تر DevOps کاموں کے لیے تیسرے فریق کی خدمات کی ضرورت نہیں ہے۔

GitLab کی تاریخ 2011 میں یوکرینی ڈیولپرز کے اندرونی پروجیکٹ کے طور پر شروع ہوئی۔ پہلا عوامی ورژن ستمبر 2011 میں جاری کیا گیا، اور 2015 میں GitLab GitLab.com پر پہلا پروجیکٹ بن گیا، جس نے کلاؤڈ ہوسٹنگ شروع کی۔ 2017 میں، GitLab نے ایک دردناک لیکن سبق آموز منتقلی کا عمل انجام دیا — Azure سے Google Cloud میں پورے انفراسٹرکچر کی منتقلی، جو لائیو کی گئی اور بلاگ پوسٹس کی ایک سیریز میں دستاویزی شکل دی گئی۔

GitLab کے فن تعمیر میں تین اہم اجزاء شامل ہیں: GitLab Rails (Ruby on Rails پر ویب ایپلیکیشن)، GitLab Shell (SSH کے ذریعے Git آپریشنز کو سنبھالنا)، اور Gitaly (Git ڈیٹا تک رسائی کے لیے gRPC سرور)۔ CI/CD GitLab Runner کے ذریعے فراہم کیا جاتا ہے — ایک علیحدہ ایپلیکیشن جو بلڈ سرورز پر انسٹال ہوتی ہے اور الگ تھلگ ماحول (Docker، Kubernetes، VirtualBox) میں جابز انجام دیتی ہے۔

GitLab CI/CD: پائپ لائنز اور رنر

GitLab CI/CD — ایک بلٹ ان مسلسل انٹیگریشن اور ڈیلیوری سسٹم ہے جو پلیٹ فارم کا ایک اہم فائدہ ہے۔ GitHub Actions کے برعکس، GitLab CI/CD شروع سے ہی فن تعمیر میں شامل تھا اور اسے علیحدہ ترتیب کی ضرورت نہیں ہے: ریپوزٹری روٹ میں .gitlab-ci.yml فائل شامل کرنے کے بعد ہر پروجیکٹ خود بخود CI/CD حاصل کرتا ہے۔

ایک پائپ لائن مراحل پر مشتمل ہوتی ہے جو ترتیب وار یا متوازی طور پر چلتے ہیں: build → test → deploy۔ ہر مرحلے میں ایک یا زیادہ جابز ہوتی ہیں جو رنرز پر انجام دی جاتی ہیں۔ اگر کسی مرحلے میں کوئی جاب ناکام ہو جاتا ہے، تو پورا مرحلہ ناکام قرار دے دیا جاتا ہے، اور بعد کے مراحل بطور ڈیفالٹ نہیں چلتے۔ نیچے موبائل پروجیکٹ کے لیے ایک مثال پائپ لائن دی گئی ہے:

yaml
# .gitlab-ci.yml
stages:
  - build
  - test
  - deploy

build-android:
  stage: build
  image: openjdk:17-jdk
  script:
    - ./gradlew assembleDebug
  artifacts:
    paths:
      - app/build/outputs/

unit-tests:
  stage: test
  script:
    - ./gradlew testDebugUnitTest

deploy-firebase:
  stage: deploy
  script:
    - firebase appdistribution:distribute app.apk

GitLab Runner متعدد ایگزیکیوٹرز کو سپورٹ کرتا ہے: Docker (تجویز کردہ)، Kubernetes، SSH، VirtualBox اور Parallels۔ سب سے مقبول آپشن Docker ایگزیکیوٹر ہے، جو ہر جاب کو علیحدہ کنٹینر میں چلاتا ہے۔ ایک رنر کو ایک پروجیکٹ کے لیے مخصوص یا پورے گروپ کے لیے مشترکہ (shared) کے طور پر رجسٹر کیا جا سکتا ہے۔ GitLab.com مفت مشترکہ رنرز فراہم کرتا ہے جس کی ماہانہ حد 2000 منٹ ہے۔

CI/CD کی جدید خصوصیات

GitLab CI/CD دستی ٹرگر (when: manual)، تاخیری ٹرگر (when: delayed)، متوازی عملدرآمد (parallel: 5)، میٹرکس، ڈائنامک پائپ لائنز (child pipelines) اور کثیر سطحی پائپ لائنز (parent-child) کو سپورٹ کرتا ہے۔ یہ پیچیدہ منظرنامے بنانے کی اجازت دیتا ہے: مثال کے طور پر، مونو ریپو میں ہر ماڈیول کے لیے متحرک طور پر پائپ لائن بنانا یا مختلف Android آرکیٹیکچرز (arm64، x86_64) کے لیے متوازی بلڈز چلانا۔

GitLab بمقابلہ GitHub: کلیدی فرق

GitLab اور GitHub — Git پلیٹ فارم مارکیٹ میں دو اہم حریف ہیں، لیکن ان کا فلسفہ اور فن تعمیر بنیادی طور پر مختلف ہے۔ GitHub کھلی کمیونٹی، انٹیگریشنز کے ایکو سسٹم اور سماجی خصوصیات (فورکس، ستارے) پر توجہ مرکوز کرتا ہے۔ GitLab ایک جامع DevOps سائیکل پر توجہ مرکوز کرتا ہے اور منصوبہ بندی سے مانیٹرنگ تک تمام ٹولز باکس سے باہر فراہم کرتا ہے۔

بنیادی آرکیٹیکچرل فرق: GitLab — ایک واحد یک سنگی ایپلیکیشن ہے جسے ڈیولپر مکمل طور پر انسٹال کرتا ہے۔ تمام خصوصیات (CI/CD، Container Registry، Security Scanning، Pages) بلٹ ان ہیں اور انسٹالیشن کے فوراً بعد کام کرتی ہیں۔ GitHub ایک API والا پلیٹ فارم ہے جہاں زیادہ تر خصوصیات تیسرے فریق کی خدمات: Travis CI، CircleCI، Jenkins، SonarQube کے ساتھ انٹیگریشن کے ذریعے لاگو کی جاتی ہیں۔ نیچے دی گئی جدول اہم خصوصیات کا موازنہ کرتی ہے:

معیارGitLabGitHub
CI/CDبلٹ ان، .gitlab-ci.yml میں YAMLActions، .github/workflows میں YAML
Self-Hostedمفت (Community Edition)ادا شدہ (Enterprise Server)
لائسنسMIT (اوپن سورس)ملکیتی
رجسٹریContainer + Dependency ProxyPackages (کنٹینر + پیکجز)
سیکیورٹیSAST، DAST، Fuzzing، Container ScanningDependabot + CodeQL (محدود)

GitLab اور GitHub کے درمیان انتخاب ٹیم کی ضروریات پر منحصر ہے۔ اگر ترجیح صفر کنفیگریشن کے ساتھ تیزی سے ڈپلائمنٹ اور ایک کھلی کمیونٹی ہے — GitHub کا انتخاب کریں۔ اگر آپ کو انفراسٹرکچر پر مکمل کنٹرول، خود ہوسٹڈ ڈپلائمنٹ اور بلٹ ان سیکیورٹی کی ضرورت ہے — GitLab بہتر ہے۔ Stack Overflow سروے (2024) کے مطابق، 90% ڈیولپرز GitHub استعمال کرتے ہیں، 33% GitLab استعمال کرتے ہیں (اکثر دونوں پلیٹ فارم ایک ساتھ)۔

Self-Managed GitLab: اپنے سرور پر انسٹالیشن

Self-Managed GitLab (پہلے On-Premises) آپ کو اپنے سرور پر پلیٹ فارم انسٹال کرنے اور ڈیٹا، انفراسٹرکچر اور اپ ٹائم پر مکمل کنٹرول حاصل کرنے کی اجازت دیتا ہے۔ یہ خاص طور پر تعمیل کی ضروریات والی تنظیموں کے لیے اہم ہے: مالیاتی شعبہ، سرکاری ادارے، طبی تنظیمیں جہاں ڈیٹا تیسرے فریق کے سرورز پر ذخیرہ نہیں کیا جا سکتا۔

GitLab انسٹالیشن Ubuntu، Debian، CentOS اور Docker کے ذریعے سپورٹ کی جاتی ہے۔ سرکاری Omnibus پیکیج میں تمام اجزاء شامل ہیں: ویب سرور (NGINX)، ڈیٹا بیس (PostgreSQL)، کیشے (Redis)، Git ہینڈلر (Gitaly)، اور پس منظر کے عمل۔ کم از کم تقاضے: 100 افراد تک کی ٹیم کے لیے 4 GB RAM اور 2 CPU۔ زیادہ بوجھ والی بڑی انسٹالیشنز کے لیے، اجزاء کو علیحدہ سرورز پر تقسیم کرنے کی سفارش کی جاتی ہے۔

bash
# Omnibus کے ذریعے Ubuntu پر GitLab CE انسٹال کرنا
curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh
sudo bash script.deb.sh

# پیکیج انسٹال کرنا
sudo EXTERNAL_URL="https://gitlab.example.com" apt install gitlab-ce

# اسٹیٹس دیکھنا
sudo gitlab-ctl status
sudo gitlab-ctl tail

Self-Managed GitLab میں CI/CD منٹس کی کوئی حد نہیں ہے — تمام رنرز تنظیم کے ہیں، اور ان کی طاقت صرف آپ کے اپنے ہارڈویئر تک محدود ہے۔ علاقوں کے لیے جیو ریپلیکیشن، آڈٹ لاگز، آئی پی بلاک کرنا اور کارپوریٹ LDAP/SAML فراہم کنندگان کے ساتھ انٹیگریشن بھی دستیاب ہے۔ GitLab ہر مہینے (22 تاریخ کو) نئی خصوصیات اور سیکیورٹی فکسز کے ساتھ اپ ڈیٹ جاری کرتا ہے۔

GitLab کے بلٹ ان سیکیورٹی ٹولز

GitLab میں سیکیورٹی پلیٹ فارم کی سطح پر بنائی گئی ہے اور اس میں متعدد اسکینرز شامل ہیں جو پائپ لائن کے ہر مرحلے پر کام کرتے ہیں۔ SAST (Static Application Security Testing) ایپلیکیشن کو چلائے بغیر سورس کوڈ میں کمزوریوں کا تجزیہ کرتا ہے، جو Java، Kotlin، Swift، Python اور JavaScript سمیت 15 سے زیادہ زبانوں کو سپورٹ کرتا ہے۔ DAST (Dynamic Application Security Testing) چلتی ہوئی ویب ایپلیکیشنز کو اندر سے کمزوریوں کے لیے جانچتا ہے۔

اضافی ٹولز: Container Scanning بنیادی تہوں میں کمزوریوں کے لیے Docker امیجز کو چیک کرتا ہے؛ Dependency Scanning پروجیکٹ کے انحصار کا تجزیہ کرتا ہے اور معروف CVE کے بارے میں خبردار کرتا ہے؛ Secret Detection غلطی سے کمٹ کردہ API چابیاں، پاس ورڈز اور ٹوکنز ڈھونڈتا ہے؛ Fuzz Testing غیر واضح بگز تلاش کرنے کے لیے غلط ڈیٹا کے ساتھ خودکار جانچ کرتا ہے۔ تمام اسکین نتائج ایک متحد سیکیورٹی ڈیش بورڈ میں دکھائے جاتے ہیں۔

GitLab تعمیل کے ٹولز بھی فراہم کرتا ہے — ریگولیٹری تقاضوں کو پورا کرنے کے لیے۔ تعمیل ڈیش بورڈ تمام پروجیکٹس کی تعمیل کی حیثیت دکھاتا ہے، آڈٹ ایونٹس منتظم اور ڈیولپر کے ہر عمل کو لاگ کرتا ہے، اور تعمیل فریم ورکس پروجیکٹس کے مخصوص گروپوں کے لیے ترتیب کی پالیسیوں کو لازمی طور پر لاگو کرنے کی اجازت دیتے ہیں۔ یہ GitLab کو سخت سیکیورٹی تقاضوں والے انٹرپرائز ماحول میں ایک مقبول انتخاب بناتا ہے۔

Container Registry اور Dependency Proxy

GitLab Container Registry — CI/CD کے ساتھ مربوط ایک بلٹ ان Docker رجسٹری ہے۔ پائپ لائن میں Docker امیج بنانے کے بعد، اسے ماحولیاتی متغیرات CI_REGISTRY اور CI_REGISTRY_USER کا استعمال کرتے ہوئے فوری طور پر رجسٹری میں شائع کیا جا سکتا ہے۔ رجسٹری پل تھرو کیشنگ، ٹیگنگ، صفائی کی پالیسیاں اور براہ راست رجسٹری میں کمزوریوں کی اسکیننگ کو سپورٹ کرتی ہے۔

Dependency Proxy — بیرونی رجسٹریوں (Docker Hub، Quay، GCR) سے کنٹینرز اور امیجز کے لیے کیشنگ میکانزم ہے۔ جب کوئی پائپ لائن ubuntu:latest جیسی امیج کی درخواست کرتی ہے، تو GitLab پہلے اپنا کیش چیک کرتا ہے — اگر امیج پہلے سے ڈاؤن لوڈ ہے، تو اسے دوبارہ نہیں لایا جاتا۔ اس سے بیرونی رجسٹریوں پر بوجھ کم ہوتا ہے، پائپ لائنز تیز ہوتی ہیں اور Docker Hub کی شرح کی حدود سے تحفظ ملتا ہے۔

موبائل ڈیولپرز کے لیے، GitLab دستاویزات اور ٹیسٹ رپورٹس کی میزبانی کے لیے GitLab Pages فراہم کرتا ہے۔ ٹیسٹ چلانے کے بعد، آرٹیفیکٹس (HTML رپورٹس، اسکرین شاٹس، لاگز) کو Pages کے طور پر شائع کیا جا سکتا ہے اور QA ٹیم کے ساتھ لنک شیئر کیا جا سکتا ہے۔ یہ کلاؤڈ اسٹوریج میں رپورٹس اپ لوڈ کرنے سے زیادہ آسان ہے کیونکہ سب کچھ اسی GitLab پروجیکٹ کے اندر رہتا ہے۔

GitLab API اور Webhooks

GitLab API (REST اور GraphQL) پلیٹ فارم کے تمام وسائل تک رسائی فراہم کرتی ہے: پروجیکٹس، صارفین، پائپ لائنز، Merge Requests، رجسٹری۔ API آٹومیشن کے لیے استعمال ہوتی ہے: ٹیمپلیٹ سے پروجیکٹ بنانا، جائزہ لینے والے کو تفویض کرنا، پائپ لائن کی حیثیت حاصل کرنا۔ Webhooks واقعات پر بیرونی نظاموں کو HTTP اطلاعیں بھیجنے کی اجازت دیتے ہیں: push، merge، Issue بنانا۔ Webhooks Mattermost، Slack، Telegram اور اندرونی نگرانی کے نظاموں کے ساتھ مربوط ہوتے ہیں۔

موبائل دستاویزات کے لیے GitLab Pages

GitLab Pages ریپوزٹری سے خود بخود جامد ویب سائٹس شائع کرتا ہے۔ موبائل پروجیکٹس کے لیے، Pages API دستاویزات، ٹیسٹ کوریج رپورٹس اور lint تجزیہ کے نتائج کی میزبانی کے لیے مفید ہے۔ شائع کرنا کامیاب پائپ لائن کے بعد خود بخود ہوتا ہے — بس .gitlab-ci.yml میں Pages شائع کرنے کے ساتھ ایک ڈپلائے مرحلہ شامل کریں۔ نتیجہ https://namespace.gitlab.io/project-name پر دستیاب ہے۔

اکثر پوچھے گئے سوالات

سادہ الفاظ میں GitLab کیا ہے؟

GitLab — کوڈ ذخیرہ کرنے اور بلڈز کو خودکار بنانے کا ایک پروگرام ہے۔ ڈیولپرز کوڈ اپ لوڈ کرتے ہیں، اور GitLab اسے جانچتا ہے، ایپلیکیشن بناتا ہے اور سرور پر خود بخود بھیجتا ہے۔

کیا GitLab مفت ہے یا ادا شدہ؟

GitLab CE (Community Edition) اوپن سورس کے ساتھ مکمل طور پر مفت ہے۔ GitLab EE (Enterprise Edition) کے اضافی سیکیورٹی فیچرز کے ساتھ فی صارف ماہانہ $19 سے شروع ہونے والے ادا شدہ منصوبے ہیں۔

GitLab Runner پائپ لائن سے کیسے مختلف ہے؟

Runner — ایک ایجنٹ ہے جو جابز (کام) انجام دیتا ہے۔ پائپ لائن — .gitlab-ci.yml میں بیان کردہ جابز کا ایک سلسلہ ہے۔ Runner سرور پر کوڈ کو جسمانی طور پر چلاتا ہے، جبکہ پائپ لائن یہ طے کرتی ہے کہ کیا اور کس ترتیب میں چلانا ہے۔

کیا ریپوزٹری GitHub سے GitLab میں منتقل کی جا سکتی ہے؟

ہاں، GitLab GitHub، Bitbucket اور دیگر پلیٹ فارمز سے ایک بلٹ ان امپورٹر فراہم کرتا ہے۔ امپورٹ زیادہ سے زیادہ تاریخ کی حفاظت کے ساتھ کوڈ، کمیٹس، شاخیں، Issues، Wiki اور پل ریکوسٹس منتقل کرتا ہے۔

iOS پروجیکٹ کے لیے GitLab CI کیسے ترتیب دیں؟

iOS کے لیے ایک macOS رنر (فزیکل Mac یا کلاؤڈ میں Mac) درکار ہے۔ پائپ لائن میں Xcode انسٹال کرنا، بلڈ کے لیے xcodebuild چلانا، ٹیسٹ کرنا اور TestFlight کے لیے .ipa فائل ایکسپورٹ کرنا شامل ہے۔

خلاصہ

  • GitLab — Git، CI/CD، سیکیورٹی اور رجسٹریوں کو یکجا کرنے والا ایک متحد اوپن سورس DevOps پلیٹ فارم۔
  • GitLab CI/CD Docker، Kubernetes اور میٹرکس بلڈز کے سپورٹ کے ساتھ .gitlab-ci.yml میں پائپ لائنز بیان کرتا ہے۔
  • Self-Managed منٹس یا صارفین کی کسی حد کے بغیر اپنے سرورز پر GitLab انسٹال کرنے کی اجازت دیتا ہے۔
  • بلٹ ان سیکیورٹی ٹولز میں SAST، DAST، Dependency Scanning اور Secret Detection شامل ہیں۔
  • Container Registry اور Dependency Proxy بلڈز کو تیز کرتے ہیں اور بیرونی رجسٹریوں پر بوجھ کم کرتے ہیں۔
  • GitLab ان تنظیموں کے لیے GitHub سے بہتر ہے جنہیں انفراسٹرکچر اور ڈیٹا پر مکمل کنٹرول درکار ہے۔
  • شروع کریں GitLab.com پر پروجیکٹ بنا کر اور .gitlab-ci.yml شامل کر کے — بنیادی ترتیب ایک گھنٹے سے بھی کم وقت لیتی ہے۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں