- En déplaçant certains projets de GitHub vers Codeberg, l’auteur explique comment commencer une migration avec un minimum d’effort
- Grâce à la fonction d’import de dépôt de Codeberg, il est possible d’effectuer une migration complète incluant les issues, les PR et les releases, avec une interface et un workflow similaires à GitHub
- L’hébergement de pages statiques peut être remplacé par
codeberg.page, et il existe aussi des alternatives comme grebedoc.dev ou statichost.eu
- La plus grande difficulté est la mise en place de l’environnement CI : il faut renoncer aux runners macOS et au volume d’exécution gratuit de GitHub, avec des alternatives comme Forgejo Actions ou Woodpecker CI
- Après la migration, il est proposé de conserver le dépôt GitHub en archive en lecture seule ou en miroir, afin de ne pas couper totalement le lien avec l’écosystème open source
Processus de migration de GitHub vers Codeberg
- En s’appuyant sur l’expérience du début de migration de certains dépôts de GitHub vers Codeberg, l’auteur décrit la difficulté réelle du processus et sa praticité
- Il avait repoussé cette migration en pensant que Codeberg n’était pas encore prêt, mais selon les projets, elle peut être étonnamment simple
- L’objectif n’est pas une configuration parfaite, mais de trouver la manière la plus simple de commencer à migrer
-
Migration des dépôts et des issues
- Codeberg propose une fonction d’import de dépôt (import) GitHub, permettant de migrer les issues, les PR, les releases et leurs artefacts
- Dans ce processus, les numéros d’issue, les labels et les informations sur les auteurs sont conservés tels quels
- L’interface de Codeberg est presque identique à celle de GitHub, ce qui rend l’expérience bien plus simple que les procédures complexes souvent nécessaires pour migrer d’un autre gestionnaire d’issues vers GitHub
-
Hébergement de pages statiques
- Si vous utilisiez GitHub Pages, vous pouvez utiliser
codeberg.page comme solution de remplacement
- Il n’y a pas de garantie officielle de disponibilité (SLO), mais l’auteur indique n’avoir en pratique jamais constaté d’interruption
- Le fonctionnement consiste à pousser du HTML dans une branche, avec une structure similaire à GitHub Pages
- Des alternatives comme grebedoc.dev ou statichost.eu sont également possibles
-
Difficultés liées à l’environnement CI (intégration continue)
- La partie la plus délicate de la migration est la mise en place de l’environnement CI
- GitHub fournit des runners macOS gratuits et une capacité d’exécution illimitée pour les dépôts publics, mais il faut y renoncer sur Codeberg
- Comme solution, il est possible d’utiliser la cross-compilation selon le langage et l’auto-hébergement des runners Forgejo Actions
-
Forgejo Actions vs Woodpecker CI
- Sur Codeberg, Woodpecker CI est plus stable, mais Forgejo Actions offre un environnement plus familier aux utilisateurs de GitHub Actions
- L’interface et la syntaxe YAML sont presque identiques, et la plupart des workflows GitHub Actions existants fonctionnent tels quels
- Par exemple, si vous utilisiez
uses: dtolnay/rust-toolchain dans GitHub Actions,
dans Forgejo Actions, il suffit de le remplacer par uses: https://github.com/dtolnay/rust-toolchain
- La documentation actuelle de Forgejo Actions sur Codeberg n’est pas à jour, et une PR existe à ce sujet
-
Si un runner macOS est nécessaire
- Si un build macOS est indispensable, il est possible de continuer à utiliser GitHub Actions et de mettre en place un miroir des commits du dépôt Codeberg vers GitHub
- Il est possible de configurer Forgejo Actions pour qu’il interroge l’API GitHub et synchronise l’état de la CI vers Codeberg
- D’autres services de CI proposant des builds macOS ont aussi été testés, mais leur intégration avec Codeberg n’est pas plus simple que GitHub Actions
-
Que faire du dépôt GitHub
- Après la migration, le dépôt GitHub est archivé après modification du README
- Il est aussi possible de configurer Codeberg pour pousser les commits vers GitHub, mais dans ce cas, les utilisateurs peuvent encore ouvrir des PR et commenter les issues
- Certains désactivent la fonction issues du dépôt GitHub, mais dans ce cas toutes les issues disparaissent en 404 et il n’est pas possible de désactiver les PR
- Par exemple, le dépôt
libvirt/libvirt utilise une GitHub Action qui ferme automatiquement toutes les PR
- Cette approche peut avoir un impact négatif sur l’auto-hébergement et l’écosystème open source dans son ensemble
- Les utilisateurs perdent leur motivation à améliorer l’optimisation des builds ou la fréquence de téléchargement des fichiers de release
- Pendant la période de transition, il est aussi possible d’envisager un miroir en lecture seule ou l’utilisation conjointe de GitHub Pages et GitHub Actions
1 commentaires
Avis Hacker News
Je n’ai rien contre Codeberg en soi, mais ce n’est pas un remplaçant complet de GitHub
Il y a beaucoup de limitations pour héberger des dépôts de code personnels ou des scripts expérimentaux, et les dépôts privés sont limités à 100 Mo
Il n’est pas non plus possible d’héberger un site web comme avec GitHub Pages. Pour ce type d’usage, une alternative réaliste consiste à auto-héberger Forgejo
Tout cela est bien expliqué dans la FAQ de Codeberg
Si je mets mes projets OSS sur GitHub, c’est pour une raison simple — la communauté s’y trouve
Si c’était juste pour stocker du code, je l’hébergerais moi-même via SSH ou SFTP
Moi, je ne publie que sur mon instance Gitea personnelle, et je ne me soucie ni des étoiles ni de la promotion
Je gère tous mes projets personnels en auto-hébergeant Forgejo. GitHub ne me manque absolument pas
On peut aussi limiter l’accès avec Tailscale pour bloquer les crawlers IA
À l’avenir, évaluer les alternatives à GitHub va devenir de plus en plus important
Mais GitHub a imposé des standards pour la CI et les builds multi-architectures, ce qui rend la concurrence difficile pour les alternatives portées par la communauté
GitHub fournit beaucoup de choses « gratuitement », mais en échange il y a de fortes chances que cela serve à la collecte de données et à l’entraînement
Codeberg ne prend pas en charge les dépôts privés, donc il n’est pas non plus possible d’empêcher Copilot de parcourir les dépôts publics
D’après la FAQ de Codeberg, si l’on a besoin de projets privés, il est recommandé d’auto-héberger Forgejo
Notre entreprise a complètement migré de GitHub vers GitLab auto-hébergé
Comme c’est placé derrière Tailscale, il n’y a pas la contrainte du SSO, et les runners CI tournent sur EKS et sur un cluster GPU. Je peux aider ceux qui réfléchissent à une migration similaire
Dire simplement « remplaçons GitHub » n’a pas beaucoup de sens. Il faut de nouvelles habitudes et une nouvelle proposition de valeur
De la même façon que GitHub a remplacé SourceForge, la plateforme de la prochaine génération devra relier en temps réel l’écriture de code et la collaboration
Par exemple, cela pourrait ressembler à Google Docs avec un commit créé à chaque prompt
Codeberg est idéal en théorie, mais en pratique il y a de gros problèmes de stabilité
En l’exploitant sans Cloudflare, le service est vulnérable aux attaques DDoS et subit des pannes fréquentes. Quand on ne peut pas accéder au dépôt distant en plein développement, c’est vraiment frustrant
Depuis le rachat par Microsoft, je n’utilise presque plus GitHub. Le workflow simple basé sur l’e-mail de Sourcehut me convient mieux
Pour la CI aussi, je pense qu’un système simplement fondé sur des commandes exécutables en local est largement suffisant
Un dépôt de code devrait par nature avoir une structure distribuée et fédérée
Grâce au système de signatures cryptographiques (GPG/SSH) de git, on peut séparer la confiance dans le dépôt de la confiance dans les commits
Il suffit de centraliser un serveur de clés et la gestion des espaces de noms, et de distribuer tout le reste