pipeline { agent any environment { APP_NAME = "pablotj-portfolio-web" REGISTRY_URL = "registry.pablotj.com" NAMESPACE = "andromeda" USER = "andromeda" PASS = credentials('docker-registry-password') TAG = "latest" HOST_PORT = "8080" CONTAINER_PORT = "3000" } stages { stage('Preparar') { steps { echo "Limpiando workspace..." deleteDir() } } stage('Checkout') { steps { echo "Clonando repo..." checkout scm } } stage('Deploy Docker') { steps { echo "Usando archivo .env secreto de Jenkins" // Se copia el secret file a un archivo .env temporal en el workspace withCredentials([file(credentialsId: 'pablotj-portfolio-website-env', variable: 'SECRET_ENV')]) { sh 'cp $SECRET_ENV .env' // Ejecuta el Makefile deploy sh "${MAKE_CMD} deploy" } } } stage('Build') { steps { echo "Construyendo imagen..." sh "make build" } } stage('Tag') { steps { echo "Tagging imagen..." sh "make tag" } } stage('Login & Push') { steps { echo "Subiendo imagen al registry..." sh "docker login ${REGISTRY_URL} -u ${USER} -p ${PASS}" sh "make push" } } stage('Deploy') { steps { echo "Deteniendo y levantando contenedor..." sh "make deploy" } } } post { success { echo "Despliegue completado correctamente" } failure { echo "Ha fallado el pipeline" } } }