platform-marketing-content/jenkins/Jenkinsfile

79 lines
2.5 KiB
Groovy

// =============================================================================
// PLATFORM MARKETING CONTENT - Jenkins Pipeline
// =============================================================================
pipeline {
agent any
environment {
PROJECT_NAME = 'pmc'
DOCKER_REGISTRY = '72.60.226.4:5000'
DEPLOY_SERVER = '72.60.226.4'
DEPLOY_USER = 'deploy'
VERSION = "${env.BUILD_NUMBER}"
}
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Install & Build') {
parallel {
stage('Backend') {
steps {
dir('apps/backend') {
sh 'npm ci && npm run build'
}
}
}
stage('Frontend') {
steps {
dir('apps/frontend') {
sh 'npm ci && npm run build'
}
}
}
}
}
stage('Docker Build & Push') {
when { anyOf { branch 'main'; branch 'develop' } }
steps {
script {
['backend', 'frontend'].each { svc ->
sh """
docker build -t ${DOCKER_REGISTRY}/${PROJECT_NAME}-${svc}:${VERSION} apps/${svc}/
docker push ${DOCKER_REGISTRY}/${PROJECT_NAME}-${svc}:${VERSION}
docker tag ${DOCKER_REGISTRY}/${PROJECT_NAME}-${svc}:${VERSION} ${DOCKER_REGISTRY}/${PROJECT_NAME}-${svc}:latest
docker push ${DOCKER_REGISTRY}/${PROJECT_NAME}-${svc}:latest
"""
}
}
}
}
stage('Deploy') {
when { branch 'main' }
steps {
input message: '¿Desplegar a Producción?', ok: 'Desplegar'
sshagent(['deploy-ssh-key']) {
sh """
ssh -o StrictHostKeyChecking=no ${DEPLOY_USER}@${DEPLOY_SERVER} '
cd /opt/apps/pmc
docker-compose -f docker/docker-compose.prod.yml pull
docker-compose -f docker/docker-compose.prod.yml up -d
'
"""
}
}
}
}
post {
always { cleanWs() }
}
}