fix: simplify Docker image tags to only use branch name
All checks were successful
CI/CD Pipeline / Backend - Build, Test & Push (push) Successful in 2m34s
CI/CD Pipeline / Frontend - Build, Test & Push (push) Successful in 11m30s
CI/CD Pipeline / Integration Tests (push) Has been skipped
CI/CD Pipeline / Deployment Summary (push) Successful in 1s
CI/CD Pipeline / Discord Notification (Failure) (push) Has been skipped
CI/CD Pipeline / Discord Notification (Success) (push) Successful in 1s

- Remove SHA-based tags (preprod-<sha>)
- Remove semver and PR tags
- Keep only branch-based tag (preprod)
- Keep latest tag for default branch
- Add Portainer debugging documentation

This ensures Portainer always pulls the stable branch tag
instead of commit-specific tags.
This commit is contained in:
David 2025-11-18 00:00:06 +01:00
parent f9b1625e20
commit 2505a36b13
2 changed files with 291 additions and 8 deletions

View File

@ -58,10 +58,6 @@ jobs:
images: ${{ env.REGISTRY }}/xpeditis-backend images: ${{ env.REGISTRY }}/xpeditis-backend
tags: | tags: |
type=ref,event=branch type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=sha,prefix={{branch}}-
type=raw,value=latest,enable={{is_default_branch}} type=raw,value=latest,enable={{is_default_branch}}
- name: Build and push Backend Docker image - name: Build and push Backend Docker image
@ -130,10 +126,6 @@ jobs:
images: ${{ env.REGISTRY }}/xpeditis-frontend images: ${{ env.REGISTRY }}/xpeditis-frontend
tags: | tags: |
type=ref,event=branch type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=sha,prefix={{branch}}-
type=raw,value=latest,enable={{is_default_branch}} type=raw,value=latest,enable={{is_default_branch}}
- name: Build and push Frontend Docker image - name: Build and push Frontend Docker image

291
PORTAINER_DEBUG_COMMANDS.md Normal file
View File

@ -0,0 +1,291 @@
# 🔍 Commandes de Debug Portainer - Status REJECTED
## Problème
Les tâches Docker Swarm passent de `pending` à `rejected`, ce qui signifie que le conteneur ne peut pas démarrer.
## Commandes de Diagnostic
### 1. Voir les logs détaillés du service
```bash
# Backend
docker service logs xpeditis_xpeditis-backend --tail=100 --follow
# Frontend
docker service logs xpeditis_xpeditis-frontend --tail=100 --follow
# Voir TOUTES les erreurs depuis le début
docker service logs xpeditis_xpeditis-backend --no-trunc
```
### 2. Inspecter le service pour voir l'erreur exacte
```bash
# Backend
docker service ps xpeditis_xpeditis-backend --no-trunc
# Frontend
docker service ps xpeditis_xpeditis-frontend --no-trunc
# Cela va montrer la raison du rejet dans la colonne "ERROR"
```
### 3. Vérifier l'état du service
```bash
docker service inspect xpeditis_xpeditis-backend --pretty
docker service inspect xpeditis_xpeditis-frontend --pretty
```
### 4. Tester manuellement le pull de l'image
```bash
# Teste si l'image peut être téléchargée
docker pull rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod
docker pull rg.fr-par.scw.cloud/weworkstudio/xpeditis-frontend:preprod
# Si erreur "unauthorized" → problème de credentials
# Si erreur "manifest unknown" → l'image n'existe pas
# Si erreur "connection refused" → problème réseau
```
### 5. Vérifier les credentials du registry
```bash
# Vérifie si tu es login au registry
docker info | grep -A 5 "Registry"
# Login au registry Scaleway
docker login rg.fr-par.scw.cloud/weworkstudio
# Username: nologin
# Password: <REGISTRY_TOKEN>
```
---
## 🐛 Erreurs Communes et Solutions
### Erreur 1: "no suitable node (insufficient resources)"
**Cause**: Pas assez de RAM/CPU sur le serveur
**Solution**:
```bash
# Vérifie les ressources disponibles
docker node ls
docker node inspect <node-id> --pretty
# Libère de l'espace
docker system prune -a
```
### Erreur 2: "image not found" ou "manifest unknown"
**Cause**: L'image n'existe pas dans le registry
**Solution**:
1. Vérifie que le CI/CD a bien terminé
2. Vérifie sur Scaleway Console que les images existent
3. Vérifie les tags disponibles
### Erreur 3: "unauthorized: authentication required"
**Cause**: Docker Swarm n'a pas les credentials du registry
**Solution**:
```bash
# Sur CHAQUE nœud du Swarm:
docker login rg.fr-par.scw.cloud/weworkstudio
# OU configure le registry dans Portainer:
# Portainer → Registries → Add registry
# Name: Scaleway
# URL: rg.fr-par.scw.cloud/weworkstudio
# Username: nologin
# Password: <REGISTRY_TOKEN>
```
### Erreur 4: "pull access denied"
**Cause**: Token Scaleway expiré ou invalide
**Solution**:
1. Génère un nouveau token sur Scaleway Console
2. Mets à jour le secret GitHub Actions `REGISTRY_TOKEN`
3. Mets à jour les credentials dans Portainer
### Erreur 5: "network xpeditis_internal not found"
**Cause**: Le réseau overlay n'existe pas
**Solution**:
```bash
# Crée le réseau manuellement
docker network create --driver overlay --internal xpeditis_internal
# Redéploie la stack
docker stack deploy -c portainer-stack.yml xpeditis
```
### Erreur 6: "traefik_network not found"
**Cause**: Le réseau Traefik externe n'existe pas
**Solution**:
```bash
# Vérifie que Traefik est bien déployé
docker network ls | grep traefik
# Si le réseau n'existe pas, crée-le:
docker network create --driver overlay traefik_network
```
### Erreur 7: "container failed to start"
**Cause**: L'application crash au démarrage
**Solution**:
```bash
# Voir les logs de démarrage
docker service logs xpeditis_xpeditis-backend --tail=200
# Erreurs courantes:
# - Variables d'environnement manquantes
# - Database non accessible
# - Redis non accessible
# - Port déjà utilisé
```
---
## 🔧 Commandes de Réparation
### Redémarrer complètement la stack
```bash
# Supprime la stack
docker stack rm xpeditis
# Attends 30 secondes que tout se nettoie
sleep 30
# Redéploie
docker stack deploy -c portainer-stack.yml xpeditis
```
### Forcer le re-pull des images
```bash
# Update le service avec force
docker service update --force --image rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod xpeditis_xpeditis-backend
docker service update --force --image rg.fr-par.scw.cloud/weworkstudio/xpeditis-frontend:preprod xpeditis_xpeditis-frontend
```
### Vérifier la configuration de la stack
```bash
# Valide le fichier compose
docker stack config -c portainer-stack.yml
# Cela va afficher les warnings/erreurs de configuration
```
---
## 📊 Monitoring en Temps Réel
```bash
# Surveille les événements Docker
docker events --filter type=service
# Surveille les tasks qui échouent
watch -n 2 'docker service ps xpeditis_xpeditis-backend --no-trunc'
# Surveille tous les services de la stack
docker stack ps xpeditis --no-trunc --filter "desired-state=running"
```
---
## 🎯 Workflow de Debug Recommandé
1. **Voir l'erreur exacte**:
```bash
docker service ps xpeditis_xpeditis-backend --no-trunc
```
2. **Lire les logs**:
```bash
docker service logs xpeditis_xpeditis-backend --tail=100
```
3. **Tester le pull manuel**:
```bash
docker pull rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod
```
4. **Vérifier les dépendances** (DB, Redis, MinIO):
```bash
docker service ls
docker service ps xpeditis_xpeditis-db
docker service ps xpeditis_xpeditis-redis
docker service ps xpeditis_xpeditis-minio
```
5. **Redéployer si nécessaire**:
```bash
docker service update --force xpeditis_xpeditis-backend
```
---
## 🔐 Configuration Registry dans Portainer
Via l'interface Portainer:
1. **Registries** → **Add registry**
2. Remplis:
- **Name**: `Scaleway Container Registry`
- **Registry URL**: `rg.fr-par.scw.cloud/weworkstudio`
- **Authentication**: ✅ ON
- **Username**: `nologin`
- **Password**: `<TON_REGISTRY_TOKEN>` (le même que dans GitHub Secrets)
3. **Add registry**
4. **Stacks****xpeditis** → **Editor**
5. En bas de la page, sélectionne le registry nouvellement ajouté
6. **Update the stack**
---
## 📝 Checklist de Vérification
- [ ] CI/CD GitHub Actions terminé avec succès
- [ ] Images existent sur Scaleway Container Registry
- [ ] Registry configuré dans Portainer avec credentials
- [ ] Réseau `traefik_network` existe
- [ ] PostgreSQL, Redis, MinIO démarrent correctement
- [ ] Variables d'environnement correctes dans la stack
- [ ] Pas d'erreur de pull dans `docker service ps`
- [ ] Logs de démarrage ne montrent pas d'erreur
---
## 🆘 Si Rien ne Fonctionne
1. **Supprime et redéploie tout**:
```bash
docker stack rm xpeditis
sleep 30
docker system prune -f
docker stack deploy -c portainer-stack.yml xpeditis
```
2. **Vérifie manuellement avec docker-compose** (en local sur le serveur):
```bash
# Convertis la stack en docker-compose
docker-compose -f portainer-stack.yml config
# Lance en mode local pour debug
docker-compose -f portainer-stack.yml up backend
```
3. **Contacte le support Scaleway** si problème de registry
---
## 📞 Informations Importantes
- **Registry Scaleway**: `rg.fr-par.scw.cloud/weworkstudio`
- **Images**:
- Backend: `rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod`
- Frontend: `rg.fr-par.scw.cloud/weworkstudio/xpeditis-frontend:preprod`
- **Username registry**: `nologin`
- **Password registry**: Dans GitHub Secrets `REGISTRY_TOKEN`