Documentation de l'Implémentation Backstage
June 22, 2025 · View on GitHub
Vue d'ensemble
Cette implémentation de Backstage est une plateforme de portail développeur moderne basée sur le framework open-source de Spotify. Elle fournit un hub centralisé pour la gestion des services, la documentation technique, et l'automatisation des processus de développement.
Architecture
Structure du Projet
Le projet suit une architecture monorepo organisée avec les packages suivants :
projects-ruler/
├── packages/
│ ├── app/ # Application frontend React
│ └── backend/ # Serveur backend Node.js
├── plugins/ # Plugins personnalisés (à développer)
├── docs/ # Documentation du projet
├── examples/ # Exemples d'entités et templates
└── config/ # Fichiers de configuration
Technologies Utilisées
- Frontend : React 18, TypeScript, Material-UI
- Backend : Node.js 18/20, Express
- Base de données : PostgreSQL
- Authentification : GitHub OAuth + Guest Provider
- Tests : Playwright (e2e), Jest
- Build : Backstage CLI, Lerna
Fonctionnalités Principales
1. Catalogue de Services (Software Catalog)
Le catalogue centralise toutes les informations sur les services, APIs et ressources :
- Composants : Services, applications, bibliothèques
- APIs : Documentation et métadonnées des APIs
- Systèmes : Groupement logique de composants
- Ressources : Infrastructure et dépendances
Exemple d'entité :
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: example-website
spec:
type: website
lifecycle: experimental
owner: guests
system: examples
2. Documentation Technique (TechDocs)
- Génération automatique de documentation depuis les dépôts Git
- Support Markdown avec extensions
- Navigation et recherche intégrées
- Publication locale ou cloud (GCS, S3)
3. Templates de Software (Scaffolder)
- Création automatisée de nouveaux projets
- Templates personnalisables
- Intégration avec les outils de développement
- Workflows d'approbation
4. Recherche Globale
- Recherche unifiée dans le catalogue, la documentation et les APIs
- Filtres avancés
- Historique des recherches
5. Authentification et Autorisations
- GitHub OAuth : Authentification via GitHub
- Guest Provider : Accès anonyme pour le développement
- Permissions : Contrôle d'accès granulaire
- Résolution d'utilisateurs : Mapping GitHub → Backstage
6. Intégrations
- GitHub : Synchronisation automatique des dépôts
- GitHub Actions : Visualisation des workflows CI/CD
- GitHub Insights : Métriques et analytics
Configuration
Variables d'Environnement
Créer un fichier .env à la racine du projet :
# Base de données PostgreSQL
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_USER=backstage
POSTGRES_PASSWORD=backstage
# GitHub Integration
GITHUB_TOKEN=your_github_personal_access_token
GITHUB_CLIENT=your_github_oauth_app_client_id
GITHUB_CLIENT_SECRET=your_github_oauth_app_client_secret
# Backend Secret (pour la production)
BACKEND_SECRET=your_backend_secret_key
Configuration de l'Application
Le fichier app-config.yaml contient la configuration principale :
- Base URL :
http://localhost:3000(frontend),http://localhost:7007(backend) - CORS : Configuration pour le développement local
- Database : Configuration PostgreSQL
- Auth : Providers d'authentification
- Catalog : Sources d'entités et règles d'accès
Configuration GitHub
L'intégration GitHub est configurée pour :
- Synchroniser automatiquement les dépôts de l'organisation
fpouyez - Scanner les fichiers
catalog-info.yamldans la branchemain - Mise à jour toutes les 30 minutes
Installation et Démarrage
Prérequis
- Node.js 18 ou 20
- PostgreSQL
- Compte GitHub avec Personal Access Token
- Application OAuth GitHub configurée
Installation
# Cloner le repository
git clone <repository-url>
cd projects-ruler
# Installer les dépendances
yarn install
# Configurer la base de données PostgreSQL
# Voir docs/Installing database.md
# Configurer les variables d'environnement
cp .env.example .env
# Éditer .env avec vos valeurs
Démarrage
# Démarrage en mode développement
yarn dev
# Avec dotenv-cli (recommandé)
dotenv -e .env -- yarn dev
# Démarrage séparé
yarn start # Frontend uniquement
yarn start-backend # Backend uniquement
L'application sera accessible sur :
- Frontend : http://localhost:3000
- Backend : http://localhost:7007
Développement
Structure des Composants
Frontend (packages/app/src/)
App.tsx: Configuration principale de l'applicationcomponents/: Composants personnaliséscatalog/: Pages du cataloguehome/: Page d'accueilsearch/: Interface de rechercheRoot/: Layout principal
Backend (packages/backend/src/)
index.ts: Point d'entrée et configuration des plugins- Plugins activés :
- App Backend
- Proxy Backend
- Scaffolder Backend
- TechDocs Backend
- Auth Backend (GitHub + Guest)
- Catalog Backend (GitHub)
- Permission Backend
- Search Backend
Tests
# Tests unitaires
yarn test
# Tests avec couverture
yarn test:all
# Tests end-to-end (Playwright)
yarn test:e2e
# Linting
yarn lint
# Formatage
yarn prettier:check
Build et Déploiement
# Build complet
yarn build:all
# Build du backend
yarn build:backend
# Image Docker
yarn build-image
Plugins Intégrés
Plugins Core
- @backstage/plugin-catalog : Gestion du catalogue
- @backstage/plugin-techdocs : Documentation technique
- @backstage/plugin-scaffolder : Templates de création
- @backstage/plugin-search : Recherche globale
- @backstage/plugin-api-docs : Documentation des APIs
- @backstage/plugin-org : Gestion des organisations
- @backstage/plugin-user-settings : Paramètres utilisateur
Plugins Communautaires
- @backstage-community/plugin-github-actions : Intégration GitHub Actions
- @roadiehq/backstage-plugin-github-insights : Métriques GitHub
Bonnes Pratiques
Développement
- TypeScript : Utiliser le typage strict
- Tests : Écrire des tests pour les nouvelles fonctionnalités
- Documentation : Maintenir la documentation à jour
- Linting : Respecter les règles ESLint et Prettier
Configuration
- Variables d'environnement : Ne jamais commiter de secrets
- Configuration locale : Utiliser
app-config.local.yamlpour les overrides - Base de données : Utiliser PostgreSQL en production
Sécurité
- Authentification : Configurer les providers appropriés
- Permissions : Définir des règles d'accès granulaires
- CORS : Configurer correctement pour la production
- Secrets : Utiliser un gestionnaire de secrets en production
Troubleshooting
Problèmes Courants
-
Erreur de connexion à la base de données
- Vérifier les variables d'environnement PostgreSQL
- S'assurer que PostgreSQL est démarré
-
Erreur d'authentification GitHub
- Vérifier le Personal Access Token
- Configurer l'application OAuth GitHub
-
Problèmes de build
- Nettoyer le cache :
yarn clean - Vérifier les versions Node.js
- Nettoyer le cache :
Logs
- Frontend : Console du navigateur
- Backend : Logs dans le terminal de démarrage
- Base de données : Logs PostgreSQL
Ressources
- Documentation officielle Backstage
- Guide de démarrage
- Configuration de la base de données
- Intégration GitHub
Support
Pour toute question ou problème :
- Consulter la documentation officielle Backstage
- Vérifier les logs d'erreur
- Consulter les issues GitHub du projet
- Contacter l'équipe de développement