79 lines
2.5 KiB
Groovy
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() }
|
|
}
|
|
}
|