pipeline {
    agent any

    stages {
        stage('Configurar Entorno') {
            steps {
                script {
                    // Seleccionamos ID de credencial y config según la rama
                    if (env.BRANCH_NAME == 'master') {
                        env.PROJECT_NAME = "django_master"
                        env.APP_CONTAINER_NAME = "django_app_master"
                        env.PORT = "8001"
                        env.DEBUG_MODE = "0"
                        env.ENV_CREDENTIAL_ID = "2" // Tu ID para master
                    } else {
                        env.PROJECT_NAME = "django_dev"
                        env.APP_CONTAINER_NAME = "django_app_dev"
                        env.PORT = "8000"
                        env.DEBUG_MODE = "1"
                        env.ENV_CREDENTIAL_ID = "1" // Tu ID para dev
                    }
                }
            }
        }

        stage('Fase Final: Containerización') {
            when { anyOf { branch 'dev'; branch 'master' } }
            steps {
                // Bloque mágico: extrae el archivo .env de la bóveda de Jenkins
                withCredentials([file(credentialsId: env.ENV_CREDENTIAL_ID, variable: 'SECRET_ENV')]) {
                    sh """
                    echo "Copiando configuración segura..."
                    cp \$SECRET_ENV deployments/.env
                    
                    echo "🚀 DESPLEGANDO: ${env.APP_CONTAINER_NAME} en puerto ${env.PORT}"
                    
                    export APP_CONTAINER_NAME=${env.APP_CONTAINER_NAME}
                    export PORT=${env.PORT}
                    export DEBUG_MODE=${env.DEBUG_MODE}
                    
                    docker compose -p ${env.PROJECT_NAME} -f deployments/docker-compose.yml up -d --build web
                    """
                }
            }
        }
    }

    post {
        success {
            echo "✅ Despliegue completado con éxito."
            // Limpieza preventiva: borramos el .env físico después del despliegue
            sh "rm -f deployments/.env"
        }
        failure {
            echo "❌ Error en el despliegue. Revisa los logs."
            sh "rm -f deployments/.env"
        }
    }
}