- व्यक्तिगत परियोजनाओं और वेबसाइट को GitHub से Codeberg पर माइग्रेट करने की प्रक्रिया और परिणाम का विस्तृत विवरण
- Forgejo के “migrate from GitHub” फीचर की मदद से repositories, issues, PR, wiki और releases को पूरी तरह ट्रांसफर किया
- लिंक पुनर्निर्देशन और GitHub repository stubs को ऑटोमेशन स्क्रिप्ट से संभालकर माइग्रेशन की स्थिति को साफ़ दिखाया
- CI/CD माइग्रेशन में Codeberg के Forgejo Actions का उपयोग किया और वातावरणीय सीमाओं के अनुसार lightweight workflows तैयार किए
- वेबसाइट को git-pages और Grebedoc की मदद से बिना किसी डाउनटाइम के माइग्रेट किया, और पूरी माइग्रेशन वीकेंड के भीतर पूरी हो गई
माइग्रेशन का अवलोकन
- GitHub Pages पर होस्ट की जा रही साइट और 45 repositories को Codeberg पर माइग्रेट किया गया
- यह सिर्फ क्लिक करने से खत्म होने वाला काम नहीं था; कई चरणों में मैनुअल काम करना पड़ा
- पूरी प्रक्रिया सप्ताहांत में पूरी हुई और बिना किसी समस्या के की गई
- इस प्रक्रिया का मकसद यह दिखाना था कि अन्य डेवलपर्स भी आसानी से माइग्रेट कर सकते हैं
चरण 1: रिपॉज़िटरी माइग्रेशन
- Codeberg, Forgejo आधारित है और इसमें “migrate from GitHub” फीचर उपलब्ध है
- GitHub से Personal Access Token (PAT) बनाकर issues आदि metadata को साथ में लाया जा सकता है
- GitHub API के rate limit के कारण एक साथ कई repositories import करने पर failure हो सकता था
- issues, PR, wiki और release पूरी तरह माइग्रेट हुए, जिससे GitHub references की जरूरत नहीं रही
चरण 2: लिंक पुनर्निर्देशन
- लोकल repositories के अंदर के GitHub लिंक को Codeberg पते में बैच में बदलना
sed और find commands से text-based auto replace किया गया
- प्रत्येक repository का
git remote URL बदलकर Codeberg किया और सभी repositories में push किया
चरण 3: GitHub repository stubs का हैंडलिंग
- GitHub repositories में migration नोटिस वाला README जोड़ा और description तथा homepage लिंक Codeberg पर बदल दिए
- कई repositories पर बैच में लागू करने के लिए automation script लिखी
gh repo archive command से repositories को archive किया गया
चरण 4: CI/CD माइग्रेशन
- Codeberg के CI दस्तावेज़ों में energy consumption को न्यूनतम रखने का सिद्धांत बताया गया है
- इसलिए केवल जरूरी परियोजनाओं (वेबसाइट, docs build आदि) के लिए ही CI रखा
- Codeberg में Woodpecker और Forgejo Actions दो CI विकल्प हैं
- GitHub Actions के समान होने के कारण Forgejo Actions चुना
- मुख्य अंतर
- अधिकांश Actions सीधे काम करते हैं
- केवल Linux runners उपलब्ध हैं, macOS और Windows उपलब्ध नहीं
- pre-installed software कम है और resources सीमित हैं
- lazy runners का उपयोग करने पर load balancing और eco-friendly execution संभव होता है
- CI performance बेहतर करने के लिए हमने LaTeX pre-installed Docker image का उपयोग किया, लेकिन version issue के कारण default Ubuntu image पर वापस आना पड़ा
चरण 5: वेबसाइट re-hosting
- GitHub Pages पर चल रही साइट को Codeberg Pages पर शिफ्ट करने की कोशिश की, लेकिन यह फीचर maintenance mode में था
- जटिलता और परफॉर्मेंस कारण अपडेट में देरी हो रही थी
- विकल्प के तौर पर git-pages और Grebedoc का उपयोग चुना
- DNS बदलने से पहले upload सपोर्ट होने से बिना डाउनटाइम के migration संभव रहा
- server-side redirection और custom headers सपोर्ट उपलब्ध था
- पुराने लिंक (
eldred.fr/fortISSimO) को बनाए रखते हुए migration पूरा हुआ
- Codeberg भविष्य में git-pages पर चरणबद्ध माइग्रेशन की योजना बना रहा है
- GitHub Pages से बेहतर satisfaction मिलने पर हमने git-pages developer Patreon support में contribute किया
समय
- रिपॉज़िटरी माइग्रेशन (1~3 चरण): आधा दिन
- CI माइग्रेशन (4 चरण): आधा दिन
- वेबसाइट माइग्रेशन (5 चरण): technical debt साफ़ करने सहित कई दिन
- कुल मिलाकर सप्ताहांत के भीतर पूरा, अपेक्षा से कहीं सरल कार्य
माइग्रेशन के बाद
- वेबसाइट पूरी तरह ठीक चल रही है, GitHub पर सिर्फ़ master शाखा ही बाकी रखा गया
- स्थायी लिंक (permalink) अभी भी काम कर रहे हैं
- GitHub repository हटाने का काम redirection न होने के कारण अभी hold पर है
- GitHub account को अन्य projects में योगदान (contribution) के लिए बनाए रखा गया है
- Codeberg पर migration होने से contributors कम हो सकते हैं, लेकिन कुछ users पहले ही Codeberg account बना कर लगातार योगदान दे रहे हैं
आभार
- Catherine ‘whitequark’ : git-pages और Grebedoc का संचालन
- SERVFAIL network टीम: DNS उपलब्ध कराने के लिए
- Codeberg तथा Forgejo contributors: migration foundation उपलब्ध कराने के लिए
अभी कोई टिप्पणी नहीं है.