8.0 KiB
🔧 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
- Aller sur console.scaleway.com
- Container Registry →
weworkstudio - Cliquer sur Push/Pull credentials
- Créer ou copier un token d'accès
Étape 2 : Ajouter le Secret dans GitHub
- Aller sur votre repo GitHub : https://github.com/VOTRE_USERNAME/xpeditis
- Settings → Secrets and variables → Actions
- Cliquer sur New repository secret
- Créer le secret :
- Name :
REGISTRY_TOKEN - Value : Coller le token Scaleway
- Name :
- 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é)
# 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 :
- ✅ Build l'image backend (AMD64 + ARM64)
- ✅ Build l'image frontend (AMD64 + ARM64)
- ✅ Push vers le registry Scaleway
- ✅ 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 pour plus de détails.
Option 2 : Re-run un Workflow Existant
- Aller sur GitHub → Actions
- Sélectionner le dernier workflow
- Cliquer sur Re-run all jobs
📊 Vérifier que ça fonctionne
1. Vérifier les Logs GitHub Actions
- GitHub → Actions
- Cliquer sur le workflow en cours
- 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
- console.scaleway.com
- Container Registry →
weworkstudio - Vérifier que vous voyez :
- ✅
xpeditis-backend:preprod - ✅
xpeditis-frontend:preprod
- ✅
3. Vérifier avec Docker CLI
# 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 :
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:preprodrg.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 :
- Vérifier que le secret existe : GitHub → Settings → Secrets → Actions
- Régénérer un token sur Scaleway Console
- Mettre à jour le secret dans GitHub
Erreur : "manifest unknown: manifest unknown"
Cause : L'image n'existe pas dans le registry
Solution :
- Vérifier que la CI/CD s'est exécutée sans erreur
- Vérifier les logs de l'étape
Build and push Docker image - 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 :
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 :
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 :
- ✅ CI/CD build les images
- ✅ CI/CD push vers le registry
- ✅ Portainer peut pull les nouvelles images
- ✅ 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_TOKENdans GitHub (Settings → Secrets → Actions) - Étape 3 : Push sur
preprodpour 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
- GitHub Actions (votre repo)
- Docker Login Action
- Docker Build Push Action
- ARM64 Support Documentation - 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