Aller au contenu

Comparaison des solutions SCM

Ce chapitre presente une analyse comparative des principales solutions d'hebergement de code source self-hosted. L'objectif est de fournir les éléments nécessaires a une decision architecturale documentee (ADR).

Format ADR

Pour documenter formellement cette decision, utilisez le format ADR décrit dans Documenter ses decisions d'architecture.


Candidats

Solution Éditeur Licence principale Première release
Gitea Communauté MIT 2016
GitLab CE / EE GitLab Inc. MIT / Proprietaire 2011
GitHub Enterprise Microsoft Proprietaire 2008 (GH) / 2014 (GHE)
Bitbucket DC Atlassian Proprietaire 2008

Grille de comparaison

Licence et coût

Critère Gitea GitLab CE GitLab EE GitHub Enterprise Bitbucket DC
Licence MIT MIT Proprietaire Proprietaire Proprietaire
Coût annuel Gratuit Gratuit ~$29/user/mois ~$21/user/mois ~$6/user/mois
Code source Ouvert Ouvert Partiel Ferme Ferme
Auto-hebergement Oui Oui Oui Oui (appliance) Oui

Empreinte ressources

Critère Gitea GitLab CE GitHub Enterprise Bitbucket DC
RAM minimum 256 Mo 4 Go 16 Go 4 Go
CPU minimum 1 vCPU 4 vCPU 4 vCPU 4 vCPU
Disque < 500 Mo > 10 Go > 50 Go > 10 Go
Conteneur ~100 Mo ~2.5 Go N/A (VM) ~1.5 Go

Empreinte Gitea

Gitea consomme environ 10x moins de ressources que GitLab. Pour une DSI qui deploie de nombreux services, cette legerete est un avantage operationnel majeur.

Protocoles Git

Critère Gitea GitLab GitHub Enterprise Bitbucket DC
HTTP(S) Oui Oui Oui Oui
SSH Oui Oui Oui Oui
Git protocol (v2) Oui Oui Oui Oui
LFS Oui Oui Oui Oui

CI/CD et automatisation

Critère Gitea GitLab GitHub Enterprise Bitbucket DC
CI/CD integre Gitea Actions GitLab CI/CD GitHub Actions Bitbucket Pipelines
Format de pipeline YAML (compatible GH Actions) .gitlab-ci.yml Workflow YAML bitbucket-pipelines.yml
Runners self-hosted Oui (act_runner) Oui Oui Oui
Webhooks Complet Complet Complet Complet

Registre de paquets

Critère Gitea GitLab GitHub Enterprise Bitbucket DC
Registre integre Oui (Gitea Packages) Oui Oui (GHCR) Non natif
Formats npm, Maven, PyPI, Docker, NuGet, Cargo, Helm, Generic npm, Maven, PyPI, Docker, NuGet, Helm, Generic npm, Maven, NuGet, Docker, RubyGems Via Artifactory
Coût supplémentaire Inclus Inclus (limites EE) Inclus Licence séparée

Revue de code

Critère Gitea GitLab GitHub Enterprise Bitbucket DC
Pull/Merge Requests Oui Oui Oui Oui
Revue inline Oui Oui Oui Oui
Approbations requises Oui Oui Oui Oui
CODEOWNERS Oui Oui Oui Non natif
Suggestions de code Oui Oui Oui Non

API et extensibilite

Critère Gitea GitLab GitHub Enterprise Bitbucket DC
API REST Swagger/OpenAPI Complète Complète Complète
API GraphQL Non Oui Oui Non
SDK officiels Go Ruby, Go, Python JS, Go, Ruby, .NET Java, Python
Marketplace/Apps Limite Riche Tres riche Marketplace Atlassian

Authentification et sécurité

Critère Gitea GitLab GitHub Enterprise Bitbucket DC
LDAP/AD Oui Oui Oui Oui
SAML Non natif Oui (EE) Oui Oui
OIDC/OAuth2 Oui Oui Oui Oui (via Crowd)
2FA (TOTP) Oui Oui Oui Oui
Audit log Basique Complet (EE) Complet Complet
Commits signes Oui (GPG/SSH) Oui (GPG) Oui (GPG/SSH) Oui (GPG)

Outils de migration

Critère Gitea GitLab GitHub Enterprise Bitbucket DC
Import depuis GitHub Oui (API) Oui N/A Oui
Import depuis GitLab Oui (API) N/A Oui Oui
Import depuis Bitbucket Oui (API) Oui Oui N/A
Migration bulk Oui (API batch) Oui Oui (GEI) Manuel

Communauté et maturité

Critère Gitea GitLab GitHub Enterprise Bitbucket DC
Stars GitHub ~47k ~24k N/A N/A
Contributeurs ~900 ~4000 N/A N/A
Fréquence release Mensuelle Mensuelle Mensuelle Trimestrielle
Documentation Bonne Excellente Excellente Bonne

Synthese

                  Legerete   Fonctionnalites   Cout   Ouverture
Gitea             █████      ███               █████  █████
GitLab CE         ██         ████              █████  ████
GitLab EE         ██         █████             ██     ██
GitHub Enterprise ██         █████             ███    █
Bitbucket DC      ███        ███               ████   █

Recommandation

Solution recommandee : Gitea

Gitea est recommande pour une DSI orientee développement pour les raisons suivantes :

  • Licence MIT — pas de vendor lock-in, auditabilite complète du code
  • Legerete — déploiement sur un conteneur de 100 Mo, 256 Mo de RAM minimum
  • API complète — Swagger/OpenAPI, compatible avec les outils existants
  • Gitea Actions — CI/CD compatible GitHub Actions, pas besoin d'un outil separe
  • Gitea Packages — registre de paquets multi-format integre
  • OIDC natif — integration directe avec Keycloak sans plugin supplémentaire
  • Migration — API de migration depuis GitHub, GitLab, Bitbucket, Gogs

Alternatives

Situation Solution recommandee
Besoin d'une plateforme tout-en-un (SCM + CI/CD + registre + SAST) GitLab EE
Ecosysteme GitHub déjà en place GitHub Enterprise
Suite Atlassian déjà déployée (Jira, Confluence) Bitbucket DC

ADR : choisir Gitea comme solution SCM

Champ Valeur
ID ADR-SCM-001
Date 2026-04-16
Statut Accepte
Decideurs Équipe plateforme

Contexte : la DSI a besoin d'un service SCM self-hosted pour héberger le code source (classifie Confidentiel), integre a la chaîne logicielle existante (Keycloak, CI/CD, registre de paquets).

Decision : déployer Gitea comme solution SCM principale.

Justification :

  • Licence MIT compatible avec la politique open source de la DSI
  • Empreinte minimale compatible avec l'infrastructure existante (Podman, PostgreSQL)
  • OIDC natif pour l'integration Keycloak
  • Gitea Actions et Packages couvrent les besoins CI/CD et registre
  • API de migration pour rapatrier les dépôts depuis les plateformes existantes

Conséquences :

  • Pas de GraphQL API (utiliser REST)
  • Ecosysteme de plugins plus reduit que GitLab/GitHub
  • Monitoring a mettre en place (pas de dashboard integre)

Alternatives rejetees : GitLab (trop lourd pour le besoin), GitHub Enterprise (licence proprietaire, coût), Bitbucket (dependance Atlassian).