diff --git a/deployments/Jenkinsfile b/deployments/Jenkinsfile index fcd0924..2379040 100644 --- a/deployments/Jenkinsfile +++ b/deployments/Jenkinsfile @@ -5,19 +5,19 @@ pipeline { stage('Configurar Entorno') { steps { script { - // Seleccionamos ID de credencial y config según la rama + // Selección de configuración 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.ENV_CREDENTIAL_ID = "2" + } else if (env.BRANCH_NAME == 'dev') { 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 + env.ENV_CREDENTIAL_ID = "1" } } } @@ -26,19 +26,23 @@ pipeline { 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..." + echo "--> Preparando configuración segura..." cp \$SECRET_ENV deployments/.env - echo "🚀 DESPLEGANDO: ${env.APP_CONTAINER_NAME} en puerto ${env.PORT}" + echo "--> 🚀 DESPLEGANDO PROYECTO: ${env.PROJECT_NAME}" - 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 + # 1. Limpieza de contenedores previos para evitar conflictos de nombres + docker compose -p ${env.PROJECT_NAME} -f deployments/docker-compose.yml down --remove-orphans + + # 2. Despliegue forzando la lectura del archivo .env específico + # CRÍTICO: --env-file asegura que DATABASE_EXPOSE_PORT se lea correctamente + docker compose \ + -p ${env.PROJECT_NAME} \ + -f deployments/docker-compose.yml \ + --env-file deployments/.env \ + up -d --build web """ } } @@ -47,12 +51,11 @@ pipeline { post { success { - echo "✅ Despliegue completado con éxito." - // Limpieza preventiva: borramos el .env físico después del despliegue + echo "✅ Despliegue de ${env.BRANCH_NAME} completado con éxito." sh "rm -f deployments/.env" } failure { - echo "❌ Error en el despliegue. Revisa los logs." + echo "❌ Error en el despliegue de ${env.BRANCH_NAME}." sh "rm -f deployments/.env" } }