ソースを参照

stage backup fix 2.0

DESKTOP-SMCIPAV\falko 4 ヶ月 前
コミット
9911eef27b
1 ファイル変更57 行追加14 行削除
  1. 57 14
      Jenkinsfile

+ 57 - 14
Jenkinsfile

@@ -133,8 +133,8 @@ pipeline {
         // }
 
         // 6. Lancement des backups après déploiement
-       stage('Backup') {
-    steps {
+     stage('Backup') {
+      steps {
         script {
             echo "🚀 Lancement du backup sur le container ${env.BACKUP_CONTAINER}"
             
@@ -159,20 +159,35 @@ pipeline {
                     echo "✅ Container ${env.BACKUP_CONTAINER} est actif"
                     sleep(10)
 
+                    // Vérifier les logs du container pour s'assurer qu'il fonctionne bien
+                    echo "📋 Vérification des logs récents du container backup..."
+                    sh "docker logs --tail 10 ${env.BACKUP_CONTAINER} 2>&1 || true"
+
+                    // Déclencher un backup manuel en utilisant mongodump avec les bonnes variables
                     echo "💾 Déclenchement du backup manuel..."
                     def backupExitCode = sh(
                         script: """
-                            docker exec ${env.BACKUP_CONTAINER} sh -c '
-                                BACKUP_DIR="/backup/\$(date +%Y-%m-%d_%H-%M-%S)" &&
+                            docker exec ${env.BACKUP_CONTAINER} bash -c '
+                                echo "=== Démarrage du backup manuel ===" &&
+                                BACKUP_DIR="/backup/manual-\$(date +%Y-%m-%d_%H-%M-%S)" &&
                                 mkdir -p "\$BACKUP_DIR" &&
-                                mongodump --host=\${MONGO_HOST} --port=\${MONGO_PORT} \\
-                                          --archive="\$BACKUP_DIR/dump.archive.gz" --gzip
+                                mongodump --host=\$MONGODB_HOST --port=\$MONGODB_PORT \\
+                                          --username=\$MONGODB_USER --password=\$MONGODB_PASS \\
+                                          --authenticationDatabase=\$MONGODB_AUTHENTICATION_DATABASE \\
+                                          --archive="\$BACKUP_DIR/dump.archive.gz" --gzip &&
+                                echo "Backup terminé dans \$BACKUP_DIR"
                             '
                         """,
                         returnStatus: true
                     )
 
                     if (backupExitCode == 0) {
+                        echo "✅ Commande de backup lancée avec succès"
+                        
+                        // Attendre un peu pour que le backup se termine
+                        sleep(30)
+                        
+                        // Vérifier les fichiers de backup créés
                         def backupFiles = sh(
                             script: "docker exec ${env.BACKUP_CONTAINER} find /backup -name '*.gz' -type f -mtime -1 | head -5",
                             returnStdout: true
@@ -180,24 +195,36 @@ pipeline {
 
                         if (backupFiles) {
                             echo "✅ Backup ${env.ENV.toUpperCase()} réussi !"
-                            echo "📁 Fichiers :"
+                            echo "📁 Fichiers créés :"
                             backupFiles.split('\n').each { file ->
                                 if (file.trim()) {
-                                    echo sh(
+                                    def fileInfo = sh(
                                         script: "docker exec ${env.BACKUP_CONTAINER} ls -lh '${file.trim()}'",
                                         returnStdout: true
                                     ).trim()
+                                    echo fileInfo
                                 }
                             }
                         } else {
-                            echo "⚠️ Aucun fichier de backup récent trouvé"
+                            echo "⚠️ Aucun fichier de backup récent trouvé, vérification des logs..."
+                            sh "docker logs --tail 20 ${env.BACKUP_CONTAINER} 2>&1 || true"
                         }
+                        
+                        // Afficher le statut final
+                        echo "📊 Statut final du backup :"
+                        sh """
+                            docker exec ${env.BACKUP_CONTAINER} bash -c '
+                                echo "=== Espace disque utilisé ===" &&
+                                df -h /backup &&
+                                echo "=== Derniers backups ===" &&
+                                ls -la /backup/ | tail -10
+                            ' || true
+                        """
+
                     } else {
                         echo "❌ Backup échoué avec code ${backupExitCode}"
-                        echo sh(
-                            script: "docker logs --tail 20 ${env.BACKUP_CONTAINER} 2>&1 || true",
-                            returnStdout: true
-                        )
+                        echo "📋 Logs détaillés :"
+                        sh "docker logs --tail 30 ${env.BACKUP_CONTAINER} 2>&1 || true"
                         currentBuild.result = 'UNSTABLE'
                     }
 
@@ -205,15 +232,31 @@ pipeline {
                     echo "❌ Container ${env.BACKUP_CONTAINER} inactif — tentative de redémarrage"
                     sh "docker-compose -f ${env.COMPOSE_FILE} restart mongodb-backup-${env.ENV} || true"
                     sleep(30)
+                    
+                    // Vérifier le statut après redémarrage
+                    def newStatus = sh(
+                        script: "docker ps --filter name=${env.BACKUP_CONTAINER} --format '{{.Status}}'",
+                        returnStdout: true
+                    ).trim()
+                    
+                    if (newStatus.contains('Up')) {
+                        echo "✅ Container redémarré avec succès"
+                    } else {
+                        echo "❌ Échec du redémarrage, vérification des logs..."
+                        sh "docker logs --tail 20 ${env.BACKUP_CONTAINER} 2>&1 || true"
+                        currentBuild.result = 'UNSTABLE'
+                    }
                 }
 
             } catch (Exception e) {
                 echo "❌ Erreur lors du backup: ${e.getMessage()}"
+                echo "📋 Logs d'urgence :"
+                sh "docker logs --tail 20 ${env.BACKUP_CONTAINER} 2>&1 || true"
                 currentBuild.result = 'UNSTABLE'
             }
         }
     }
-  }
+}
        
         // 7. Push optionnel de l'image dans le registre Nexus
         // stage('Push to Private Registry') {