• व्यक्तिगत परियोजनाओं और वेबसाइट को 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 उपलब्ध कराने के लिए

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.