GitLab पसंद आने के कारण
(whileforloop.com)- व्यक्तिगत प्रोजेक्ट प्रबंधन और CI/CD इंटीग्रेशन पर केंद्रित होकर GitLab को लंबे समय तक इस्तेमाल करने के अनुभव का परिचय
- शुरुआत में मुफ़्त private repository उपलब्ध होना GitHub की तुलना में बड़ा फ़ायदा था, और बाद में भी workflow पूरी तरह स्थापित हो गया
- Container Registry फीचर का सबसे ज़्यादा उपयोग होता है; अलग Docker Hub अकाउंट या token मैनेजमेंट के बिना images स्टोर की जा सकती हैं
- GitLab CI की config file-आधारित pipeline, मुफ़्त shared runners, और विस्तृत documentation को प्रमुख ताकतों के रूप में बताया गया है
- हालांकि web interface की धीमी गति और feature overload को कमियों के रूप में इंगित किया गया है, और GitHub व GitLab को उद्देश्य के अनुसार साथ-साथ इस्तेमाल करना सबसे प्रभावी तरीका बताया गया है
GitLab इस्तेमाल करने की पृष्ठभूमि
- उस समय जब GitHub private repositories के लिए शुल्क लेता था, GitLab ने मुफ़्त private repositories दीं, इसलिए इसका उपयोग शुरू किया गया
- कई प्रयोगात्मक प्रोजेक्ट्स को सार्वजनिक किए बिना मैनेज किया जा सकता था
- बाद में GitHub ने भी मुफ़्त नीति शुरू की, लेकिन तब तक CI pipeline, Docker images, और deployment scripts पहले से GitLab-केंद्रित बन चुके थे, इसलिए migration की ज़रूरत नहीं रही
Docker Registry फीचर
- हर GitLab प्रोजेक्ट में Container Registry डिफ़ॉल्ट रूप से शामिल होती है
- local या CI में image build करके push करना और ज़रूरत की जगह pull करके इस्तेमाल करना एक सीधा workflow है
- अलग Docker Hub अकाउंट या token मैनेजमेंट की ज़रूरत नहीं, और pull limits की चिंता भी नहीं
- व्यक्तिगत प्रोजेक्ट्स के लिए यह पर्याप्त है, और 10GB storage limit भी व्यवहार में समस्या नहीं बनती
- पुराने tags साफ़ करने और layer sharing से space efficiency बनी रहती है
CI/CD वातावरण
- GitLab CI ने शुरुआत से ही ‘config file-आधारित CI’ की अवधारणा को लागू किया
- सिर्फ़
.gitlab-ci.ymlफ़ाइल जोड़ने पर pipeline अपने-आप चल जाती है - config version control में रहती है, इसलिए पुराने pipeline state को track करना संभव है
- सिर्फ़
- मूल pipeline image build, push, और optional deployment से बनी होती है
- deployment stage को manual trigger से नियंत्रित किया जा सकता है
- shared runners मुफ़्त हैं, लेकिन धीमे हैं; ज़रूरत पड़ने पर self-hosted runner को VPS पर आसानी से इंस्टॉल किया जा सकता है
- CI/CD documentation बहुत विस्तृत है, और एक बार pattern समझ आने पर मौजूदा config को copy करके reuse करते हुए प्रभावी प्रबंधन संभव है
असुविधाएँ
- web interface की गति धीमी है, और merge requests, pipeline, तथा logs के बीच स्विच करते समय इंतज़ार करना पड़ता है
- हाल में कुछ सुधार दिखता है, लेकिन फिर भी GitHub से धीमा है
- feature overload की समस्या भी मौजूद है
- issue tracking, wiki, package registry, security scanning जैसी कई सुविधाएँ हैं, लेकिन वास्तविक उपयोग लगभग 10% तक सीमित है
- फिर भी ज़रूरत पड़ने पर पहले से built-in फीचर्स का उपयोग कर पाने का संभावित लाभ है
लागत और workflow
- लगभग 12 व्यक्तिगत प्रोजेक्ट्स मुफ़्त में चलाए जा रहे हैं, जिनमें सक्रिय प्रोजेक्ट्स से लेकर रुके हुए प्रयोग भी शामिल हैं
- GitLab को private workspace और GitHub को public project sharing space के रूप में अलग-अलग इस्तेमाल किया जाता है
- GitHub collaboration और visibility के लिए उपयुक्त है, जबकि GitLab प्रयोग और automation management के लिए अधिक उपयुक्त है
- दोनों प्लेटफ़ॉर्म को साथ में इस्तेमाल करने की संरचना workflow के संतुलन और दक्षता को बनाए रखने के तरीके के रूप में काम करती है
3 टिप्पणियां
कहा जाता है कि GitLab का CI/CD अच्छा है।
लेकिन मेरे लिए free account की limitations की वजह से, भले ही Korean सपोर्ट हो, फिर भी हाथ GitHub की तरफ ही जाता है।
Forgejo और उसका base Gitea, दोनों में GitHub की नकल जैसा feel आता है, इसलिए उनकी तरफ मन नहीं जाता।
हम GitT इस्तेमाल कर रहे हैं, और उसके Git जैसी इमेज की वजह से learning curve कम था, इसलिए इसे अपनाया।
GitLab में फीचर्स बहुत ज़्यादा हैं, इसलिए उसे मुश्किल और भारी होने का feedback काफ़ी मिला था..
Hacker News की राय
कस्टमर सपोर्ट प्रतिनिधि गायब हो गए और हर पूछताछ अब sales team के ज़रिए करनी पड़ती है, जबकि ज़्यादातर फीचर्स महंगे Ultimate प्लान में बंधे हुए हैं
“AI” नहीं वाले फीचर्स सालों से वही समस्याएँ झेल रहे हैं, फिर भी उन्हें यूँ ही छोड़ दिया गया है
इसलिए अब जब भी sales email आता है, मैं यह खेल खेलता हूँ: “पुराने दिनों जैसी तेज़ development speed फिर कब देखने को मिलेगी?”
2015~2020 के आसपास इसे मज़े से इस्तेमाल किया, लेकिन हर फीचर अधपका था और ध्यान परिपक्वता से ज़्यादा feature checklist भरने पर था
शायद एक छोटी टीम के लिए बड़ी कंपनियों से प्रतिस्पर्धा करने का यही व्यावहारिक तरीका रहा होगा
10 साल बाद भी वही हाल है, और Gitea या Forgejo उससे कहीं तेज़ हैं; Go 1.26 रिलीज़ के बाद यह और बेहतर होने वाला है
खासकर issue search इतनी धीमी है कि दोबारा इस्तेमाल करने का मन नहीं है
2018 में Bitbucket और Confluence से GitLab Cloud पर आए थे, और Atlassian के products कहीं ज़्यादा धीमे और जटिल लगे
GitLab हल्का और तेज़ लगा, और आज भी ज़्यादातर चीज़ें ठीक काम करती हैं
हाल में Jira Cloud इस्तेमाल किया, वह और भी धीमा और असुविधाजनक था
सच में हैरान करने वाली बात है
सर्वर की बिजली खपत 10% कम हो गई, और GitLab में बेकार के फीचर्स इतने थे कि UI घुटनभरा लगता था
Forgejo सरल है और project के हिसाब से फीचर्स छिपाए जा सकते हैं
हालाँकि auto-update नहीं है, polish कम है, और कुछ फीचर्स ठीक से काम नहीं करते
पता नहीं वह Jekyll theme थी या खुद बनाई गई थी, लेकिन उसे explore करना ही आनंददायक था
ज़रूरी CI, issue tracking वगैरह सब बने रहे, लेकिन interface तुरंत load होता है और बेकार के फीचर्स नहीं हैं
GitLab CI का syntax मुझे ज़्यादा पसंद था, लेकिन Forgejo का API कम polished है
फिर भी DB तक सीधी पहुँच होने से custom scripts के ज़रिए काम चल जाता है
Kubernetes cluster खड़ा करके Forgejo और Argo को जोड़कर test किया
Microsoft की जगह Codeberg के संसाधनों का इस्तेमाल करना सही होगा या नहीं, समझ नहीं आता
CI शायद Woodpecker नाम का project संभालता है; GitLab CI की तुलना कैसी है, यह जानने की जिज्ञासा है
GitLab, Gerrit जितना नहीं सही, लेकिन stacked MR सपोर्ट करता है, और force push के बाद भी comments देखे जा सकते हैं
मुझे लगता है GitHub-शैली की बड़े PR केंद्रित संस्कृति productivity और review culture दोनों को नुकसान पहुँचाती है
LDAP sync settings जैसी admin सुविधाओं में सुधार की गुंजाइश है, लेकिन CI/CD syntax आम तौर पर सुविधाजनक है
2021~2024 तक इसे रोज़ इस्तेमाल करते हुए bugs की अलग diary लिखनी पड़ी थी
उससे जुड़ा अनुभव पिछली टिप्पणी में छोड़ा था
GitHub का simple issue tracker इस्तेमाल करने में कहीं आसान है
project managers को GitLab पसंद आ सकता है, लेकिन user के नज़रिए से GitHub बेहतर लगता है
अब GitHub इस्तेमाल कर रहा हूँ, जो बहुत सरल और कुशल है
मुझे GitLab सच में नापसंद है
Docker images के मामले में सिर्फ़ per-layer limit है, कुल क्षमता इससे कहीं अधिक हो सकती है
संबंधित दस्तावेज़: Storage Usage Quotas, Container Registry Issue
70GB वाली Interstellar REMUX अपलोड करके देखना चाहता हूँ
“कुछ करने की कोशिश → error → search → 3~8 साल पुरानी आधिकारिक bug report मिलना” वाला पैटर्न बार-बार दोहरता है
कई फीचर्स 80/20 पूर्णता पर अटके हुए हैं, और MR view इतना धीमा है कि तकलीफ़ होती है
इससे जुड़ी बात पिछली टिप्पणी में लिखी थी
Maven, NPM, Python package registry को CI pipeline में integrate कर पाने की बात पसंद है
लेकिन फीचर्स ज़रूरत से ज़्यादा हैं, और हर screen लगभग दोगुनी धीमी लगती है
उसके बाद Azure DevOps पर बदलाव हुआ, लेकिन वह धीमा है और quality gates भी कमज़ोर हैं
build server के VM में बदलने के बाद IOPS limits की वजह से builds धीमे हो गए
GitLab पर लौटना चाहता हूँ, और performance सुधारने में योगदान देने की भी इच्छा है