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। उच्च लोड वाले बड़े इंस्टॉलेशन के लिए, घटकों को अलग-अलग सर्वरों पर विभाजित करने की अनुशंसा की जाती है।
# Ubuntu पर Omnibus के माध्यम से 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 गैर-स्पष्ट बग खोजने के लिए गलत डेटा के साथ स्वचालित परीक्षण करता है। सभी स्कैन परिणाम एकीकृत सुरक्षा डैशबोर्ड (Security Dashboard) में प्रदर्शित होते हैं।
GitLab Compliance भी प्रदान करता है — नियामक आवश्यकताओं को पूरा करने के लिए उपकरण। कंप्लायंस डैशबोर्ड सभी प्रोजेक्ट्स की अनुपालन स्थिति दिखाता है, ऑडिट इवेंट प्रशासक और डेवलपर के प्रत्येक कार्य को लॉग करता है, और कंप्लायंस फ्रेमवर्क प्रोजेक्ट्स के विशिष्ट समूहों के लिए कॉन्फ़िगरेशन नीतियों को अनिवार्य रूप से लागू करने की अनुमति देता है। यह GitLab को सख्त सुरक्षा आवश्यकताओं वाले एंटरप्राइज वातावरण में एक लोकप्रिय विकल्प बनाता है।
GitLab Container Registry — CI/CD के साथ एकीकृत एक बिल्ट-इन Docker रजिस्ट्री है। पाइपलाइन में Docker इमेज बनाने के बाद, इसे पर्यावरण चर CI_REGISTRY और CI_REGISTRY_USER का उपयोग करके तुरंत रजिस्ट्री में प्रकाशित किया जा सकता है। रजिस्ट्री pull-through कैशिंग, टैगिंग, सफाई नीतियां और सीधे रजिस्ट्री में कमजोरियों की स्कैनिंग का समर्थन करती है।
Dependency Proxy — बाहरी रजिस्ट्रियों (Docker Hub, Quay, GCR) से कंटेनर और इमेज के लिए कैशिंग तंत्र है। जब कोई पाइपलाइन ubuntu:latest जैसी इमेज का अनुरोध करती है, तो GitLab पहले अपना कैश जांचता है — यदि इमेज पहले से डाउनलोड है, तो इसे फिर से नहीं लाया जाता है। यह बाहरी रजिस्ट्रियों पर लोड कम करता है, पाइपलाइनों को गति देता है और Docker Hub दर सीमाओं से बचाता है।
मोबाइल डेवलपर्स के लिए, GitLab दस्तावेज़ीकरण और परीक्षण रिपोर्ट होस्ट करने के लिए GitLab Pages प्रदान करता है। परीक्षण चलाने के बाद, आर्टिफैक्ट (HTML रिपोर्ट, स्क्रीनशॉट, लॉग) को Pages के रूप में प्रकाशित किया जा सकता है और QA टीम के साथ लिंक साझा किया जा सकता है। यह रिपोर्ट को क्लाउड स्टोरेज में अपलोड करने से अधिक सुविधाजनक है क्योंकि सब कुछ उसी GitLab प्रोजेक्ट के अंदर रहता है।
GitLab API (REST और GraphQL) प्लेटफ़ॉर्म के सभी संसाधनों तक पहुंच प्रदान करती है: प्रोजेक्ट, उपयोगकर्ता, पाइपलाइन, मर्ज रिक्वेस्ट, रजिस्ट्री। 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 एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें