- Détaille en détail le processus et les résultats de la migration de mes projets personnels et de mon site web de GitHub vers Codeberg
- Migration complète des dépôts, issues, PR, wiki et releases grâce à la fonction « migrate from GitHub » de Forgejo
- Le réétiquetage des liens et le traitement des stubs de dépôts GitHub sont effectués par des scripts automatisés pour signaler clairement la migration
- Pour la migration CI/CD, utilisation de Forgejo Actions sur Codeberg et création de workflows allégés adaptés aux contraintes d’environnement
- Migration sans interruption du site web via git-pages et Grebedoc, avec achèvement de l’ensemble de la migration durant le week-end
Aperçu de la migration
- Migration vers Codeberg du site hébergé sur GitHub Pages et de 45 dépôts
- Ce n'était pas une simple opération en un clic : plusieurs étapes manuelles ont été nécessaires
- Le processus complet a été réalisé sur un week-end, sans gêne
- Objectif : montrer qu'il est possible pour d'autres développeurs de migrer facilement
Étape 1 : Migration des dépôts
- Codeberg, basé sur Forgejo, propose la fonction "migrate from GitHub"
- En créant un Personal Access Token (PAT) sur GitHub, il est possible d'importer également les métadonnées comme les issues
- À cause du rate limit de l'API GitHub, il pouvait y avoir des échecs si plusieurs dépôts étaient importés simultanément
- Issues, PR, wiki et releases ont été migrés sans perte, sans nécessiter de références GitHub
Étape 2 : Réaffectation des liens
- Conversion massive des liens GitHub dans les dépôts locaux vers des adresses Codeberg
- Remplacement en masse basé sur le texte via les commandes
sed et find
- Modification de l'URL
git remote de chaque dépôt vers Codeberg, puis push sur tous les dépôts
Étape 3 : Traitement des stubs de dépôts GitHub
- Ajout d'un README d'annonce de migration dans les dépôts GitHub, puis mise à jour des descriptions et des liens de page d'accueil vers Codeberg
- Un script d'automatisation a été écrit pour l'appliquer à plusieurs dépôts en lot
- Archivage des dépôts via la commande
gh repo archive
Étape 4 : Migration CI/CD
- La documentation CI de Codeberg insiste sur le principe de réduire au minimum la consommation d'énergie
- Selon ce principe, seuls les projets nécessitant réellement de la CI (site web, génération de documentation, etc.) ont été conservés
- Codeberg propose Woodpecker et Forgejo Actions comme options CI
- Forgejo Actions a été choisi, car il est proche de GitHub Actions
- Principales différences
- La plupart des Actions fonctionnent telles quelles
- Seuls des runners Linux sont proposés, macOS et Windows ne le sont pas
- Les logiciels préinstallés sont peu nombreux et les ressources limitées
- L'utilisation de lazy runners permet la répartition de charge et une exécution plus écologique
- Pour améliorer les performances CI, une image Docker avec LaTeX préinstallé a été utilisée, puis un retour à l'image Ubuntu par défaut a eu lieu à cause d'un problème de version
Étape 5 : Réhébergement du site web
- Le site opéré via GitHub Pages devait être déplacé vers Codeberg Pages, mais cette fonction est en mode maintenance
- Les mises à jour sont retardées à cause de la complexité et de problèmes de performance
- En alternative, git-pages et Grebedoc ont été découverts puis utilisés
- Prise en charge du chargement avant changement DNS, ce qui permet une migration sans interruption
- Prise en charge des redirections côté serveur et des en-têtes personnalisés
- Migration achevée en conservant le lien existant (
eldred.fr/fortISSimO)
- Codeberg prévoit une migration progressive vers git-pages à l'avenir
- La satisfaction dépasse celle de GitHub Pages, avec participation au support Patreon du développeur de git-pages
Temps de travail
- Migration des dépôts (étapes 1 à 3) : une demi-journée
- Migration CI (étape 4) : une demi-journée
- Migration du site web (étape 5) : quelques jours avec nettoyage de dette technique
- Globalement, terminé dans le week-end, une tâche plus simple que prévu
Après la migration
- Le site web fonctionne correctement, seule la branche master GitHub est réduite
- Les permaliens restent opérationnels
- La suppression des dépôts GitHub est en attente en raison de l'absence de redirection
- Le compte GitHub est conservé pour contribuer à d'autres projets
- La migration vers Codeberg pourrait réduire le nombre de contributeurs, mais certains utilisateurs ont déjà créé un compte Codeberg et continuent à contribuer
Remerciements
- Catherine ‘whitequark’ : exploitation de git-pages et de Grebedoc
- SERVFAIL network team : fourniture du DNS
- Contributeurs de Codeberg et de Forgejo : fourniture des bases de migration
Aucun commentaire pour le moment.