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

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

  1. Aller sur console.scaleway.com
  2. Container Registryweworkstudio
  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. SettingsSecrets and variablesActions
  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é)

# 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 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
  2. Container Registryweworkstudio
  3. 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: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 :

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 :

  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


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