- Die detaillierte Beschreibung von Prozess und Ergebnis des Umzugs persönlicher Projekte und einer Website von GitHub zu Codeberg
- Vollständige Migration von Repositories, Issues, PRs, Wiki und Releases mit der „migrate from GitHub"-Funktion von Forgejo
- Link-Neuzuordnung und die Verarbeitung von GitHub-Repository-Stubs wurden per Automatisierungsskript durchgeführt, um den Umzug klar kenntlich zu machen
- Für die CI/CD-Migration wurde Forgejo Actions von Codeberg genutzt und auf die Umgebungsrestriktionen mit leichtgewichtigen Workflows reagiert
- Die Website wurde mit git-pages und Grebedoc ohne Ausfallzeit migriert; die komplette Migration wurde an einem Wochenende abgeschlossen
Migrationsübersicht
- Die auf GitHub Pages gehostete Website und 45 Repositories wurden nach Codeberg migriert
- Das war nicht mit einem einzigen Klick getan und erforderte mehrere manuelle Schritte
- Der gesamte Vorgang wurde über ein Wochenende hinweg abgeschlossen und verlief problemlos
- Ziel war es zu zeigen, dass auch andere Entwickler den Umzug leicht selbst durchführen können
Schritt 1: Repository-Migration
- Codeberg basiert auf Forgejo und stellt die Funktion „migrate from GitHub“ bereit
- Durch ein in GitHub erzeugtes Personal Access Token (PAT) lassen sich Issues und andere Metadaten mit übernehmen
- Wegen des Rate Limits der GitHub-API konnte der gleichzeitige Import mehrerer Repositories fehlschlagen
- Issues, PRs, Wiki und Releases wurden vollständig migriert, sodass GitHub-Referenzen nicht mehr nötig sind
Schritt 2: Link-Neuzuordnung
- GitHub-Links in lokalen Repositories wurden gesammelt auf Codeberg-Adressen ersetzt
- Die Ersetzung wurde mit den Kommandos
sed und find automatisch auf Textbasis durchgeführt
- Danach wurde die
git remote-URL jedes Repositories auf Codeberg geändert und in alle Repositories gepusht
Schritt 3: GitHub-Repository-Stubs verarbeiten
- In den GitHub-Repositories wurden README-Dateien mit Umzugsankündigung ergänzt, Beschreibung und Homepage-Link auf Codeberg angepasst
- Ein Automatisierungsskript wurde erstellt und auf mehrere Repositories angewendet
- Die Repositories wurden mit dem Befehl
gh repo archive archiviert
Schritt 4: CI/CD-Migration
- In der CI-Dokumentation von Codeberg wird das Prinzip der Minderung des Energieverbrauchs hervorgehoben
- Deshalb werden nur Projekte, bei denen CI wirklich nötig ist (Website, Dokumentations-Builds usw.), beibehalten
- Codeberg bietet zwei CI-Optionen: Woodpecker und Forgejo Actions
- Es wurde Forgejo Actions gewählt, da es GitHub Actions ähnelt
- Wichtigste Unterschiede
- Die meisten Actions funktionieren direkt weiter
- Es gibt nur Linux-Runner; macOS und Windows werden nicht bereitgestellt
- Weniger vorinstallierte Software und eingeschränkte Ressourcen
- Mit lazy runners lassen sich Lastverteilung und umweltfreundlicher Betrieb realisieren
- Zur Verbesserung der CI-Leistung wurde ein vorinstalliertes LaTeX-Docker-Image eingesetzt, bei Versionsproblemen jedoch wieder das Standard-Ubuntu-Image verwendet
Schritt 5: Website-Rehosting
- Die auf GitHub Pages betriebene Website sollte auf Codeberg Pages umziehen, doch diese Funktion war im Wartungsmodus
- Das Update verzögert sich wegen Komplexitäts- und Performance-Problemen
- Stattdessen wurden git-pages und Grebedoc entdeckt und genutzt
- Durch Uploads vor DNS-Wechsel ist ein unterbrechungsfreier Übergang möglich
- Es werden serverseitige Redirects und eigene Header unterstützt
- Der Umzug wurde abgeschlossen, während der bestehende Link (
eldred.fr/fortISSimO) erhalten blieb
- Codeberg plant, künftig schrittweise auf git-pages zu migrieren
- Höhere Zufriedenheit als bei GitHub Pages, daher Beteiligung am Patreon des/der git-pages-EntwicklerIn
Zeitaufwand
- Repository-Migration (1–3): ein halber Tag
- CI-Migration (4): ein halber Tag
- Website-Migration (5): inkl. Bereinigung technischer Schulden dauerte mehrere Tage
- Insgesamt innerhalb eines Wochenendes abgeschlossen, einfacher als erwartet
Nach der Migration
- Die Website ist funktionsfähig, auf GitHub wurde nur der
master-Branch reduziert
- Permanente Links (Permalinks) funktionieren weiterhin
- Die Löschung von GitHub-Repositories ist wegen fehlender Weiterleitungen ausgesetzt
- Das GitHub-Konto bleibt für Beiträge an andere Projekte bestehen
- Mit dem Umzug zu Codeberg könnte es weniger Beitragende geben, jedoch haben einige Nutzer bereits Codeberg-Konten angelegt und tragen weiterhin bei
Danksagung
- Catherine ‘whitequark’: Betrieb von git-pages und Grebedoc
- SERVFAIL network-Team: DNS-Bereitstellung
- Codeberg- und Forgejo-Mitwirkende: Bereitstellung der Migrationsgrundlage
Noch keine Kommentare.