feat: integración final de Jenkins con inyección de .env segura
All checks were successful
DEPLOY_MULTI_BRACH/pipeline/head This commit looks good
All checks were successful
DEPLOY_MULTI_BRACH/pipeline/head This commit looks good
This commit is contained in:
48
deployments/Jenkinsfile
vendored
48
deployments/Jenkinsfile
vendored
@@ -5,37 +5,55 @@ pipeline {
|
||||
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.CONTAINER_NAME = "django_app_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.CONTAINER_NAME = "django_app_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('Despliegue') {
|
||||
stage('Fase Final: Containerización') {
|
||||
when { anyOf { branch 'dev'; branch 'master' } }
|
||||
steps {
|
||||
echo "DESPLEGANDO: ${env.CONTAINER_NAME} en el puerto ${env.PORT}"
|
||||
|
||||
// CAMBIAMOS docker-compose (guion) por docker compose (espacio)
|
||||
sh """
|
||||
CONTAINER_NAME=${env.CONTAINER_NAME} \
|
||||
PORT=${env.PORT} \
|
||||
DEBUG_MODE=${env.DEBUG_MODE} \
|
||||
docker compose -p ${env.PROJECT_NAME} -f deployments/docker-compose.yml up -d --build web
|
||||
"""
|
||||
|
||||
echo "Ejecutando migraciones en ${env.CONTAINER_NAME}..."
|
||||
sh "docker exec ${env.CONTAINER_NAME} python manage.py migrate --noinput"
|
||||
// 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user