xpeditis2.0/DEPLOYMENT_READY.md
David 2e5dcec05c
All checks were successful
CI/CD Pipeline / Backend - Build, Test & Push (push) Successful in 6m17s
CI/CD Pipeline / Frontend - Build, Test & Push (push) Successful in 14m45s
CI/CD Pipeline / Integration Tests (push) Has been skipped
CI/CD Pipeline / Deployment Summary (push) Successful in 2s
CI/CD Pipeline / Discord Notification (Failure) (push) Has been skipped
CI/CD Pipeline / Discord Notification (Success) (push) Successful in 2s
fix
2025-11-19 18:27:42 +01:00

7.5 KiB

🚀 Xpeditis - Prêt pour Déploiement

Tous les Problèmes Résolus

1. Migrations Automatiques

  • Problème : Tables manquantes (notifications, webhooks, etc.)
  • Solution : Script apps/backend/startup.js exécute les migrations au démarrage Docker
  • Fichiers :

2. Configuration Portainer Synchronisée

  • Problème : Variables d'environnement manquantes dans Portainer stack
  • Solution : Ajout de toutes les variables depuis docker-compose.dev.yml
  • Fichiers :

3. Erreurs YAML Corrigées

  • Problème : DATABASE_LOGGING must be a string, number or null
  • Solution : Conversion de tous les booléens et nombres en strings
  • Documentation : PORTAINER_YAML_FIX.md

4. Support ARM64 Ajouté

📋 Checklist de Déploiement

Préparation (Local)

  • Migrations automatiques implémentées
  • Configuration Portainer synchronisée
  • YAML type errors corrigés
  • Support ARM64 ajouté
  • Documentation complète créée

Configuration GitHub (À FAIRE)

  • Configurer le secret REGISTRY_TOKEN (REQUIS)

    1. Aller sur Scaleway Console
    2. Container Registry → weworkstudio → Push/Pull credentials
    3. Copier le token
    4. GitHub → Settings → Secrets → Actions → New repository secret
    5. Name: REGISTRY_TOKEN, Value: [token Scaleway]
  • Optionnel : Autres secrets

    • NEXT_PUBLIC_API_URL : https://api.preprod.xpeditis.com
    • NEXT_PUBLIC_APP_URL : https://app.preprod.xpeditis.com
    • DISCORD_WEBHOOK_URL : URL webhook Discord

Déploiement (À FAIRE)

  • Commit et push

    git add .
    git commit -m "feat: automatic migrations + ARM64 support + Portainer fixes"
    git push origin preprod
    
  • Vérifier CI/CD (GitHub Actions)

    • Aller sur GitHub Actions
    • Attendre ~10-15 min (build multi-architecture)
    • Vérifier que les jobs réussissent :
      • Backend - Build, Test & Push
      • Frontend - Build, Test & Push
  • Vérifier le Registry Scaleway

    • Aller sur Scaleway Console
    • Vérifier que les images existent :
      • xpeditis-backend:preprod
      • xpeditis-frontend:preprod
    • Vérifier qu'elles sont multi-architecture :
      docker manifest inspect rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod
      # Doit montrer "amd64" ET "arm64"
      
  • Déployer sur Portainer

    1. Copier le contenu de docker/portainer-stack.yml
    2. Aller sur Portainer → Stacks → Votre stack
    3. Click "Editor"
    4. Remplacer tout le contenu
    5. Cocher "Re-pull image and redeploy"
    6. Click "Update the stack"
  • Vérifier le déploiement

    • Backend : https://api.preprod.xpeditis.com/api/v1/health
    • Frontend : https://app.preprod.xpeditis.com
    • Vérifier les logs Portainer :
      ✅ PostgreSQL is ready
      ✅ Successfully ran X migration(s)
      ✅ Database migrations completed
      🚀 Starting NestJS application...
      

📚 Documentation

Guides Techniques

Fichiers Modifiés (Session Actuelle)

.github/workflows/ci.yml           # ARM64 support (2 lignes)
docker/portainer-stack.yml         # Variables + type fixes
apps/backend/startup.js            # Migrations automatiques (NEW)
apps/backend/Dockerfile            # CMD vers startup.js

Documentation Précédente (Toujours Valide)

🎯 Résumé des Images Docker

Backend

Image: rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod
Architectures: linux/amd64, linux/arm64
Features:
  - Migrations automatiques au démarrage
  - Wait for PostgreSQL (30 retries)
  - NestJS avec TypeORM
  - Support multi-architecture

Frontend

Image: rg.fr-par.scw.cloud/weworkstudio/xpeditis-frontend:preprod
Architectures: linux/amd64, linux/arm64
Features:
  - Next.js 14 production build
  - Tailwind CSS compilé
  - Support multi-architecture

Performance Attendue

Métrique Valeur
Build CI/CD (multi-arch) ~10-15 min
Démarrage backend (avec migrations) ~30-60s
Démarrage frontend ~5-10s
Temps déploiement Portainer ~2-3 min

🔧 Troubleshooting

Erreur : "no matching manifest for linux/arm64"

Cause : Images pas encore buildées avec ARM64 support Solution : Attendre que la CI/CD se termine après le push

Erreur : "relation does not exist"

Cause : Migrations pas exécutées Solution : Vérifier les logs backend, le script startup.js doit s'exécuter

Erreur : "denied: requested access to the resource is denied"

Cause : Secret REGISTRY_TOKEN pas configuré ou invalide Solution : Vérifier le secret dans GitHub Settings → Secrets → Actions

Portainer ne peut pas pull les images

Cause 1 : Images pas encore dans le registry (CI/CD pas terminée) Cause 2 : Registry credentials Portainer invalides Solution : Vérifier Portainer → Registries → Scaleway credentials

📊 État du Projet

Composant Status Version
Backend API Prêt NestJS 10+
Frontend Prêt Next.js 14+
Database PostgreSQL 15 Migrations auto
Cache Redis 7 TTL 15min
Storage MinIO/S3 Compatible
CI/CD GitHub Actions Multi-arch
Portainer Attente déploiement ARM64 ready

🎉 Prochaine Étape

URGENT : Configurer le secret REGISTRY_TOKEN sur GitHub pour débloquer le déploiement.

Une fois fait :

  1. Push sur preprod → CI/CD build les images → Images disponibles dans registry
  2. Update stack Portainer → Pull images ARM64 → Déploiement réussi

Date : 2025-11-19 Status : Prêt pour déploiement (attente configuration secret GitHub) Blocage : Secret REGISTRY_TOKEN requis ETA Déploiement : ~30 min après configuration secret