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

200 lines
7.5 KiB
Markdown

# 🚀 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** :
- [apps/backend/startup.js](apps/backend/startup.js) - Script Node.js qui attend PostgreSQL + lance migrations
- [apps/backend/Dockerfile](apps/backend/Dockerfile) - Modifié pour utiliser `startup.js`
### 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** :
- [docker/portainer-stack.yml](docker/portainer-stack.yml) - Configuration complète et corrigée
### 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](PORTAINER_YAML_FIX.md)
### 4. Support ARM64 Ajouté ✅
- **Problème** : Serveur Portainer est ARM64, images CI/CD étaient AMD64 uniquement
- **Solution** : Build multi-architecture (AMD64 + ARM64)
- **Fichiers** :
- [.github/workflows/ci.yml](.github/workflows/ci.yml) - Ajout `platforms: linux/amd64,linux/arm64`
- **Documentation** : [ARM64_SUPPORT.md](ARM64_SUPPORT.md), [DOCKER_ARM64_FIX.md](DOCKER_ARM64_FIX.md)
## 📋 Checklist de Déploiement
### Préparation (Local)
- [x] ✅ Migrations automatiques implémentées
- [x] ✅ Configuration Portainer synchronisée
- [x] ✅ YAML type errors corrigés
- [x] ✅ Support ARM64 ajouté
- [x] ✅ Documentation complète créée
### Configuration GitHub (À FAIRE)
- [ ] **Configurer le secret `REGISTRY_TOKEN`** (REQUIS)
1. Aller sur [Scaleway Console](https://console.scaleway.com/registry/namespaces)
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**
```bash
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](https://github.com/VOTRE_USERNAME/xpeditis/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](https://console.scaleway.com/registry/namespaces)
- Vérifier que les images existent :
-`xpeditis-backend:preprod`
-`xpeditis-frontend:preprod`
- Vérifier qu'elles sont multi-architecture :
```bash
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](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
- [ARM64_SUPPORT.md](ARM64_SUPPORT.md) - Support multi-architecture détaillé
- [DOCKER_ARM64_FIX.md](DOCKER_ARM64_FIX.md) - Résumé du fix ARM64
- [PORTAINER_YAML_FIX.md](PORTAINER_YAML_FIX.md) - Fix des erreurs YAML
- [CICD_REGISTRY_SETUP.md](CICD_REGISTRY_SETUP.md) - Configuration CI/CD complète
- [REGISTRY_PUSH_GUIDE.md](REGISTRY_PUSH_GUIDE.md) - Guide push manuel (fallback)
### 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)
- [PORTAINER_MIGRATION_AUTO.md](PORTAINER_MIGRATION_AUTO.md) - Migrations automatiques
- [DEPLOYMENT_CHECKLIST.md](DEPLOYMENT_CHECKLIST.md) - Checklist déploiement
- [CHANGES_SUMMARY.md](CHANGES_SUMMARY.md) - Résumé exhaustif
- [DEPLOY_README.md](DEPLOY_README.md) - Guide déploiement rapide
## 🎯 Résumé des Images Docker
### Backend
```yaml
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
```yaml
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