Ver código fonte

fix stage backup

DESKTOP-SMCIPAV\falko 4 meses atrás
pai
commit
d63fcb88f4
1 arquivos alterados com 70 adições e 79 exclusões
  1. 70 79
      Jenkinsfile

+ 70 - 79
Jenkinsfile

@@ -135,97 +135,88 @@ pipeline {
         // 6. Lancement des backups après déploiement
        // 6. Lancement des backups après déploiement
         // 6. Lancement des backups après déploiement
-stage('Backup') {
-    steps {
-        script {
-            echo "🚀 Lancement du backup sur le container ${env.BACKUP_CONTAINER}"
-            
-            try {
-                // Vérifier que le conteneur backup existe
-                def containerExists = sh(
-                    script: "docker ps -a --filter name=${env.BACKUP_CONTAINER} --format '{{.Names}}'",
-                    returnStdout: true
-                ).trim()
-                
-                if (!containerExists) {
-                    echo "⚠️  Container ${env.BACKUP_CONTAINER} n'existe pas, lancement du service..."
-                    sh "docker-compose -f ${env.COMPOSE_FILE} up -d mongodb-backup-${env.ENV}"
-                    sleep(30)
-                }
-                
-                // Vérifier que le conteneur est en cours d'exécution
-                def containerStatus = sh(
-                    script: "docker ps --filter name=${env.BACKUP_CONTAINER} --format '{{.Status}}'",
-                    returnStdout: true
-                ).trim()
-                
-                if (containerStatus.contains('Up')) {
-                    echo "✅ Container ${env.BACKUP_CONTAINER} est actif"
-                    echo "⏳ Vérification de la connectivité MongoDB..."
-                    sleep(10)
-                    
-                    // Déclenchement du backup manuel via mongodump
-                    echo "💾 Déclenchement du backup manuel..."
-                    def backupExitCode = sh(
-                        script: """
-                            docker exec ${env.BACKUP_CONTAINER} sh -c "
-                                mkdir -p /backup/$(date +%Y-%m-%d_%H-%M-%S) &&
-                                mongodump --host=${env.MONGO_HOST} --port=${env.MONGO_PORT} --archive=/backup/$(date +%Y-%m-%d_%H-%M-%S)/dump.archive.gz --gzip
-                            "
-                        """,
-                        returnStatus: true
-                    )
+       stage('Backup') {
+            steps {
+                script {
+                    echo "🚀 Lancement du backup sur le container ${env.BACKUP_CONTAINER}"
                     
-                    if (backupExitCode == 0) {
-                        def backupFiles = sh(
-                            script: "docker exec ${env.BACKUP_CONTAINER} find /backup -name '*.gz' -type f -mtime -1 | head -5",
+                    try {
+                        def containerExists = sh(
+                            script: "docker ps -a --filter name=${env.BACKUP_CONTAINER} --format '{{.Names}}'",
+                            returnStdout: true
+                        ).trim()
+
+                        if (!containerExists) {
+                            echo "⚠️  Container ${env.BACKUP_CONTAINER} n'existe pas, lancement..."
+                            sh "docker-compose -f ${env.COMPOSE_FILE} up -d mongodb-backup-${env.ENV}"
+                            sleep(30)
+                        }
+
+                        def containerStatus = sh(
+                            script: "docker ps --filter name=${env.BACKUP_CONTAINER} --format '{{.Status}}'",
                             returnStdout: true
                         ).trim()
-                        
-                        if (backupFiles) {
-                            echo "✅ Backup ${env.ENV.toUpperCase()} réussi !"
-                            echo "📁 Fichiers de backup récents :"
-                            backupFiles.split('\n').each { file ->
-                                if (file.trim()) {
-                                    def fileInfo = sh(
-                                        script: "docker exec ${env.BACKUP_CONTAINER} ls -lh '${file.trim()}'",
-                                        returnStdout: true
-                                    ).trim()
-                                    echo "   ${fileInfo}"
+
+                        if (containerStatus.contains('Up')) {
+                            echo "✅ Container ${env.BACKUP_CONTAINER} est actif"
+                            sleep(10)
+
+                            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)" &&
+                                        mkdir -p "$BACKUP_DIR" &&
+                                        mongodump --host=${env.MONGO_HOST} --port=${env.MONGO_PORT} \
+                                                  --archive="$BACKUP_DIR/dump.archive.gz" --gzip
+                                    '
+                                """,
+                                returnStatus: true
+                            )
+
+                            if (backupExitCode == 0) {
+                                def backupFiles = sh(
+                                    script: "docker exec ${env.BACKUP_CONTAINER} find /backup -name '*.gz' -type f -mtime -1 | head -5",
+                                    returnStdout: true
+                                ).trim()
+
+                                if (backupFiles) {
+                                    echo "✅ Backup ${env.ENV.toUpperCase()} réussi !"
+                                    echo "📁 Fichiers :"
+                                    backupFiles.split('\n').each { file ->
+                                        if (file.trim()) {
+                                            echo sh(
+                                                script: "docker exec ${env.BACKUP_CONTAINER} ls -lh '${file.trim()}'",
+                                                returnStdout: true
+                                            ).trim()
+                                        }
+                                    }
+                                } else {
+                                    echo "⚠️ Aucun fichier de backup récent trouvé"
                                 }
+                            } else {
+                                echo "❌ Backup échoué avec code ${backupExitCode}"
+                                echo sh(
+                                    script: "docker logs --tail 20 ${env.BACKUP_CONTAINER} 2>&1 || true",
+                                    returnStdout: true
+                                )
+                                currentBuild.result = 'UNSTABLE'
                             }
+
                         } else {
-                            echo "⚠️  Aucun fichier de backup récent trouvé"
+                            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)
                         }
-                        
-                    } else {
-                        echo "❌ Le processus de backup a retourné un code d'erreur : ${backupExitCode}"
-                        def containerLogs = sh(
-                            script: "docker logs --tail 20 ${env.BACKUP_CONTAINER} 2>&1 || echo 'Impossible de récupérer les logs'",
-                            returnStdout: true
-                        )
-                        echo "📋 Logs du conteneur backup :"
-                        echo "${containerLogs}"
+
+                    } catch (Exception e) {
+                        echo "❌ Erreur lors du backup: ${e.getMessage()}"
                         currentBuild.result = 'UNSTABLE'
                     }
-                    
-                } else {
-                    echo "❌ Container ${env.BACKUP_CONTAINER} n'est pas actif"
-                    echo "🔄 Tentative de redémarrage du service..."
-                    sh """
-                        docker-compose -f ${env.COMPOSE_FILE} restart mongodb-backup-${env.ENV} || true
-                        sleep 30
-                    """
                 }
-                
-            } catch (Exception e) {
-                echo "❌ Erreur lors du backup: ${e.getMessage()}"
-                echo "⚠️  Le backup a échoué mais le déploiement continue"
-                currentBuild.result = 'UNSTABLE'
             }
         }
-    }
-}
+    
 
         // 7. Push optionnel de l'image dans le registre Nexus
         // stage('Push to Private Registry') {