GitLab — ایک اوپن سورس DevOps پلیٹ فارم ہے جو Git ریپوزٹری، بلٹ ان CI/CD، کنٹینر رجسٹری اور سیکیورٹی ٹولز کو ایک ایپلیکیشن میں یکجا کرتا ہے۔ 2011 میں Sid Sijbrandij اور Dmitriy Zaporozhets کے ذریعے قائم کیا گیا، یہ پلیٹ فارم انٹرپرائز ماحول کے لیے کلاؤڈ سروس (GitLab.com) اور خود انتظامی ورژن (Self-Managed) دونوں فراہم کرتا ہے۔ GitLab، 2024 کے مطابق، پلیٹ فارم 30 ملین سے زیادہ رجسٹرڈ صارفین استعمال کرتے ہیں۔
اہم نکات
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 — ایک بلٹ ان مسلسل انٹیگریشن اور ڈیلیوری سسٹم ہے جو پلیٹ فارم کا ایک اہم فائدہ ہے۔ GitHub Actions کے برعکس، GitLab CI/CD شروع سے ہی فن تعمیر میں شامل تھا اور اسے علیحدہ ترتیب کی ضرورت نہیں ہے: ریپوزٹری روٹ میں .gitlab-ci.yml فائل شامل کرنے کے بعد ہر پروجیکٹ خود بخود CI/CD حاصل کرتا ہے۔
ایک پائپ لائن مراحل پر مشتمل ہوتی ہے جو ترتیب وار یا متوازی طور پر چلتے ہیں: build → test → deploy۔ ہر مرحلے میں ایک یا زیادہ جابز ہوتی ہیں جو رنرز پر انجام دی جاتی ہیں۔ اگر کسی مرحلے میں کوئی جاب ناکام ہو جاتا ہے، تو پورا مرحلہ ناکام قرار دے دیا جاتا ہے، اور بعد کے مراحل بطور ڈیفالٹ نہیں چلتے۔ نیچے موبائل پروجیکٹ کے لیے ایک مثال پائپ لائن دی گئی ہے:
# .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 منٹ ہے۔
GitLab CI/CD دستی ٹرگر (when: manual)، تاخیری ٹرگر (when: delayed)، متوازی عملدرآمد (parallel: 5)، میٹرکس، ڈائنامک پائپ لائنز (child pipelines) اور کثیر سطحی پائپ لائنز (parent-child) کو سپورٹ کرتا ہے۔ یہ پیچیدہ منظرنامے بنانے کی اجازت دیتا ہے: مثال کے طور پر، مونو ریپو میں ہر ماڈیول کے لیے متحرک طور پر پائپ لائن بنانا یا مختلف Android آرکیٹیکچرز (arm64، x86_64) کے لیے متوازی بلڈز چلانا۔
GitLab اور GitHub — Git پلیٹ فارم مارکیٹ میں دو اہم حریف ہیں، لیکن ان کا فلسفہ اور فن تعمیر بنیادی طور پر مختلف ہے۔ GitHub کھلی کمیونٹی، انٹیگریشنز کے ایکو سسٹم اور سماجی خصوصیات (فورکس، ستارے) پر توجہ مرکوز کرتا ہے۔ GitLab ایک جامع DevOps سائیکل پر توجہ مرکوز کرتا ہے اور منصوبہ بندی سے مانیٹرنگ تک تمام ٹولز باکس سے باہر فراہم کرتا ہے۔
بنیادی آرکیٹیکچرل فرق: GitLab — ایک واحد یک سنگی ایپلیکیشن ہے جسے ڈیولپر مکمل طور پر انسٹال کرتا ہے۔ تمام خصوصیات (CI/CD، Container Registry، Security Scanning، Pages) بلٹ ان ہیں اور انسٹالیشن کے فوراً بعد کام کرتی ہیں۔ GitHub ایک API والا پلیٹ فارم ہے جہاں زیادہ تر خصوصیات تیسرے فریق کی خدمات: Travis CI، CircleCI، Jenkins، SonarQube کے ساتھ انٹیگریشن کے ذریعے لاگو کی جاتی ہیں۔ نیچے دی گئی جدول اہم خصوصیات کا موازنہ کرتی ہے:
| معیار | GitLab | GitHub |
|---|---|---|
| CI/CD | بلٹ ان، .gitlab-ci.yml میں YAML | Actions، .github/workflows میں YAML |
| Self-Hosted | مفت (Community Edition) | ادا شدہ (Enterprise Server) |
| لائسنس | MIT (اوپن سورس) | ملکیتی |
| رجسٹری | Container + Dependency Proxy | Packages (کنٹینر + پیکجز) |
| سیکیورٹی | SAST، DAST، Fuzzing، Container Scanning | Dependabot + CodeQL (محدود) |
GitLab اور GitHub کے درمیان انتخاب ٹیم کی ضروریات پر منحصر ہے۔ اگر ترجیح صفر کنفیگریشن کے ساتھ تیزی سے ڈپلائمنٹ اور ایک کھلی کمیونٹی ہے — GitHub کا انتخاب کریں۔ اگر آپ کو انفراسٹرکچر پر مکمل کنٹرول، خود ہوسٹڈ ڈپلائمنٹ اور بلٹ ان سیکیورٹی کی ضرورت ہے — GitLab بہتر ہے۔ Stack Overflow سروے (2024) کے مطابق، 90% ڈیولپرز GitHub استعمال کرتے ہیں، 33% GitLab استعمال کرتے ہیں (اکثر دونوں پلیٹ فارم ایک ساتھ)۔
Self-Managed GitLab (پہلے On-Premises) آپ کو اپنے سرور پر پلیٹ فارم انسٹال کرنے اور ڈیٹا، انفراسٹرکچر اور اپ ٹائم پر مکمل کنٹرول حاصل کرنے کی اجازت دیتا ہے۔ یہ خاص طور پر تعمیل کی ضروریات والی تنظیموں کے لیے اہم ہے: مالیاتی شعبہ، سرکاری ادارے، طبی تنظیمیں جہاں ڈیٹا تیسرے فریق کے سرورز پر ذخیرہ نہیں کیا جا سکتا۔
GitLab انسٹالیشن Ubuntu، Debian، CentOS اور Docker کے ذریعے سپورٹ کی جاتی ہے۔ سرکاری Omnibus پیکیج میں تمام اجزاء شامل ہیں: ویب سرور (NGINX)، ڈیٹا بیس (PostgreSQL)، کیشے (Redis)، Git ہینڈلر (Gitaly)، اور پس منظر کے عمل۔ کم از کم تقاضے: 100 افراد تک کی ٹیم کے لیے 4 GB RAM اور 2 CPU۔ زیادہ بوجھ والی بڑی انسٹالیشنز کے لیے، اجزاء کو علیحدہ سرورز پر تقسیم کرنے کی سفارش کی جاتی ہے۔
# 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 میں سیکیورٹی پلیٹ فارم کی سطح پر بنائی گئی ہے اور اس میں متعدد اسکینرز شامل ہیں جو پائپ لائن کے ہر مرحلے پر کام کرتے ہیں۔ 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 کو سخت سیکیورٹی تقاضوں والے انٹرپرائز ماحول میں ایک مقبول انتخاب بناتا ہے۔
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 (REST اور GraphQL) پلیٹ فارم کے تمام وسائل تک رسائی فراہم کرتی ہے: پروجیکٹس، صارفین، پائپ لائنز، Merge Requests، رجسٹری۔ API آٹومیشن کے لیے استعمال ہوتی ہے: ٹیمپلیٹ سے پروجیکٹ بنانا، جائزہ لینے والے کو تفویض کرنا، پائپ لائن کی حیثیت حاصل کرنا۔ Webhooks واقعات پر بیرونی نظاموں کو HTTP اطلاعیں بھیجنے کی اجازت دیتے ہیں: push، merge، Issue بنانا۔ Webhooks Mattermost، Slack، Telegram اور اندرونی نگرانی کے نظاموں کے ساتھ مربوط ہوتے ہیں۔
GitLab Pages ریپوزٹری سے خود بخود جامد ویب سائٹس شائع کرتا ہے۔ موبائل پروجیکٹس کے لیے، Pages API دستاویزات، ٹیسٹ کوریج رپورٹس اور lint تجزیہ کے نتائج کی میزبانی کے لیے مفید ہے۔ شائع کرنا کامیاب پائپ لائن کے بعد خود بخود ہوتا ہے — بس .gitlab-ci.yml میں Pages شائع کرنے کے ساتھ ایک ڈپلائے مرحلہ شامل کریں۔ نتیجہ https://namespace.gitlab.io/project-name پر دستیاب ہے۔
اکثر پوچھے گئے سوالات
GitLab — کوڈ ذخیرہ کرنے اور بلڈز کو خودکار بنانے کا ایک پروگرام ہے۔ ڈیولپرز کوڈ اپ لوڈ کرتے ہیں، اور GitLab اسے جانچتا ہے، ایپلیکیشن بناتا ہے اور سرور پر خود بخود بھیجتا ہے۔
GitLab CE (Community Edition) اوپن سورس کے ساتھ مکمل طور پر مفت ہے۔ GitLab EE (Enterprise Edition) کے اضافی سیکیورٹی فیچرز کے ساتھ فی صارف ماہانہ $19 سے شروع ہونے والے ادا شدہ منصوبے ہیں۔
Runner — ایک ایجنٹ ہے جو جابز (کام) انجام دیتا ہے۔ پائپ لائن — .gitlab-ci.yml میں بیان کردہ جابز کا ایک سلسلہ ہے۔ Runner سرور پر کوڈ کو جسمانی طور پر چلاتا ہے، جبکہ پائپ لائن یہ طے کرتی ہے کہ کیا اور کس ترتیب میں چلانا ہے۔
ہاں، GitLab GitHub، Bitbucket اور دیگر پلیٹ فارمز سے ایک بلٹ ان امپورٹر فراہم کرتا ہے۔ امپورٹ زیادہ سے زیادہ تاریخ کی حفاظت کے ساتھ کوڈ، کمیٹس، شاخیں، Issues، Wiki اور پل ریکوسٹس منتقل کرتا ہے۔
iOS کے لیے ایک macOS رنر (فزیکل Mac یا کلاؤڈ میں Mac) درکار ہے۔ پائپ لائن میں Xcode انسٹال کرنا، بلڈ کے لیے xcodebuild چلانا، ٹیسٹ کرنا اور TestFlight کے لیے .ipa فائل ایکسپورٹ کرنا شامل ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں