xpeditis2.0/CICD_REGISTRY_SETUP.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

258 lines
8.0 KiB
Markdown

# 🔧 Configuration CI/CD - Registry Scaleway
## ✅ Bonne Nouvelle !
La CI/CD est **déjà configurée** dans `.github/workflows/ci.yml` pour :
- ✅ Build les images Docker (backend + frontend)
-**Support multi-architecture (AMD64 + ARM64)** 🎉
- ✅ Push vers le registry Scaleway
- ✅ Créer les tags corrects (`preprod`)
## ⚙️ Configuration Requise
Pour que la CI/CD puisse push vers le registry Scaleway, il faut configurer le secret GitHub.
### Étape 1 : Obtenir le Token Scaleway
1. Aller sur [console.scaleway.com](https://console.scaleway.com)
2. **Container Registry**`weworkstudio`
3. Cliquer sur **Push/Pull credentials**
4. Créer ou copier un token d'accès
### Étape 2 : Ajouter le Secret dans GitHub
1. Aller sur votre repo GitHub : https://github.com/VOTRE_USERNAME/xpeditis
2. **Settings****Secrets and variables****Actions**
3. Cliquer sur **New repository secret**
4. Créer le secret :
- **Name** : `REGISTRY_TOKEN`
- **Value** : Coller le token Scaleway
5. Cliquer **Add secret**
### Étape 3 : Vérifier les Autres Secrets (Optionnels)
Pour le frontend, vérifier ces secrets (si vous utilisez des URLs différentes) :
| Secret Name | Description | Exemple |
|-------------|-------------|---------|
| `NEXT_PUBLIC_API_URL` | URL de l'API backend | `https://api.preprod.xpeditis.com` |
| `NEXT_PUBLIC_APP_URL` | URL du frontend | `https://app.preprod.xpeditis.com` |
| `DISCORD_WEBHOOK_URL` | Webhook Discord pour notifications | `https://discord.com/api/webhooks/...` |
**Note** : Si ces secrets ne sont pas définis, la CI/CD utilisera les valeurs par défaut (`http://localhost:4000` et `http://localhost:3000`).
---
## 🚀 Déclencher la CI/CD
Une fois le secret `REGISTRY_TOKEN` configuré :
### Option 1 : Push sur preprod (Recommandé)
```bash
# Committer les derniers changements
git add .
git commit -m "feat: add automatic migrations and Docker fixes"
# Push sur la branche preprod
git push origin preprod
```
La CI/CD se déclenchera automatiquement et :
1. ✅ Build l'image backend (AMD64 + ARM64)
2. ✅ Build l'image frontend (AMD64 + ARM64)
3. ✅ Push vers le registry Scaleway
4. ✅ Envoie une notification Discord (si configuré)
**Note** : Le build multi-architecture prend ~10-15 min (au lieu de ~5-7 min pour AMD64 seul). Voir [ARM64_SUPPORT.md](ARM64_SUPPORT.md) pour plus de détails.
### Option 2 : Re-run un Workflow Existant
1. Aller sur GitHub → **Actions**
2. Sélectionner le dernier workflow
3. Cliquer sur **Re-run all jobs**
---
## 📊 Vérifier que ça fonctionne
### 1. Vérifier les Logs GitHub Actions
1. GitHub → **Actions**
2. Cliquer sur le workflow en cours
3. Vérifier les étapes :
-`Build and push Backend Docker image`
-`Build and push Frontend Docker image`
**Logs attendus** :
```
Building image...
Pushing to rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod
✓ Image pushed successfully
```
### 2. Vérifier sur Scaleway Console
1. [console.scaleway.com](https://console.scaleway.com)
2. **Container Registry**`weworkstudio`
3. Vérifier que vous voyez :
-`xpeditis-backend:preprod`
-`xpeditis-frontend:preprod`
### 3. Vérifier avec Docker CLI
```bash
# Login au registry
docker login rg.fr-par.scw.cloud/weworkstudio
# Vérifier que les images existent (multi-architecture)
docker manifest inspect rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod
docker manifest inspect rg.fr-par.scw.cloud/weworkstudio/xpeditis-frontend:preprod
# Si vous voyez du JSON avec "manifests": [{ "platform": { "architecture": "amd64" }}, { "platform": { "architecture": "arm64" }}]
# Les images multi-architecture existent ✅
```
---
## 🔍 Tags Créés par la CI/CD
La CI/CD crée automatiquement ces tags :
| Image | Tag | Quand |
|-------|-----|-------|
| `xpeditis-backend` | `preprod` | À chaque push sur `preprod` |
| `xpeditis-frontend` | `preprod` | À chaque push sur `preprod` |
| `xpeditis-backend` | `latest` | Si `preprod` est la branche par défaut |
| `xpeditis-frontend` | `latest` | Si `preprod` est la branche par défaut |
**Configuration actuelle dans `.github/workflows/ci.yml`** :
```yaml
tags: |
type=ref,event=branch # Tag avec le nom de la branche
type=raw,value=latest,enable={{is_default_branch}} # Tag 'latest' si branche par défaut
```
Pour la branche `preprod`, cela crée :
- `rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod`
- `rg.fr-par.scw.cloud/weworkstudio/xpeditis-frontend:preprod`
---
## ⚠️ Problèmes Courants
### Erreur : "denied: requested access to the resource is denied"
**Cause** : Le secret `REGISTRY_TOKEN` n'est pas configuré ou invalide
**Solution** :
1. Vérifier que le secret existe : GitHub → Settings → Secrets → Actions
2. Régénérer un token sur Scaleway Console
3. Mettre à jour le secret dans GitHub
---
### Erreur : "manifest unknown: manifest unknown"
**Cause** : L'image n'existe pas dans le registry
**Solution** :
1. Vérifier que la CI/CD s'est exécutée sans erreur
2. Vérifier les logs de l'étape `Build and push Docker image`
3. Re-run le workflow si nécessaire
---
### Erreur : "server gave HTTP response to HTTPS client"
**Cause** : Configuration Docker incorrecte
**Solution** :
Le registry Scaleway utilise toujours HTTPS. Si vous voyez cette erreur, vérifier que l'URL du registry est correcte :
```yaml
registry: rg.fr-par.scw.cloud/weworkstudio # ✅ Correct
registry: rg.fr-par.scw.cloud # ❌ Incorrect
```
---
## 🎯 Après Configuration
Une fois le secret configuré et la CI/CD exécutée :
### 1. Portainer Pourra Pull les Images
Dans Portainer, lors de l'update du stack :
```yaml
xpeditis-backend:
image: rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod
# ✅ Cette image existe maintenant dans le registry
xpeditis-frontend:
image: rg.fr-par.scw.cloud/weworkstudio/xpeditis-frontend:preprod
# ✅ Cette image existe maintenant dans le registry
```
### 2. Workflow Automatique
À chaque push sur `preprod` :
1. ✅ CI/CD build les images
2. ✅ CI/CD push vers le registry
3. ✅ Portainer peut pull les nouvelles images
4. ✅ Notification Discord envoyée
**Plus besoin de build et push manuellement !**
---
## 📝 Résumé des Actions à Faire
- [ ] **Étape 1** : Obtenir le token Scaleway (Console → Container Registry → Push/Pull credentials)
- [ ] **Étape 2** : Ajouter le secret `REGISTRY_TOKEN` dans GitHub (Settings → Secrets → Actions)
- [ ] **Étape 3** : Push sur `preprod` pour déclencher la CI/CD
- [ ] **Étape 4** : Vérifier sur GitHub Actions que le workflow réussit
- [ ] **Étape 5** : Vérifier sur Scaleway Console que les images sont là
- [ ] **Étape 6** : Update le stack Portainer avec re-pull image
---
## 🔗 Liens Utiles
- [Scaleway Console](https://console.scaleway.com/registry/namespaces)
- [GitHub Actions (votre repo)](https://github.com/VOTRE_USERNAME/xpeditis/actions)
- [Docker Login Action](https://github.com/docker/login-action)
- [Docker Build Push Action](https://github.com/docker/build-push-action)
- [ARM64 Support Documentation](ARM64_SUPPORT.md) - Multi-architecture builds
---
## ✅ Confirmation que tout fonctionne
Une fois tout configuré, vous devriez voir dans GitHub Actions :
```
✓ Checkout code
✓ Setup Node.js
✓ Install dependencies
✓ Lint code
✓ Run unit tests
✓ Build application
✓ Set up Docker Buildx
✓ Login to Scaleway Registry
✓ Extract metadata for Docker
✓ Build and push Backend Docker image
→ Pushing to rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod
→ Image pushed successfully
✓ Deployment Summary
✓ Discord Notification (Success)
```
Et dans Portainer, l'update du stack réussira sans erreur de pull ! 🎉
---
**Date** : 2025-11-19
**Version** : 1.0
**Statut** : Configuration requise pour activer la CI/CD