Jenkinsfile
2.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
pipeline {
agent any
tools {
// Asegurar que Jenkins tenga configurado el JDK 21 y Maven 3
jdk 'Java 21'
maven 'Maven 3'
}
environment {
// Variables del Contenedor de Producción (GeoServer)
SERVER_IP = '192.168.1.123'
// NOTA: Reemplazar por la Credencial SSH configurada en Jenkins para apuntar a root@192.168.1.123
SSH_CREDENTIAL_ID = 'sigem-server-123'
IMAGE_NAME = 'sigem/gis-geoserver-app:latest'
TAR_FILE = 'gis-backend.tar'
}
stages {
stage('Clonar Repositorio (Checkout)') {
steps {
checkout scm
echo "Código Fuente clonado y listo para validación."
}
}
stage('Compilación Java (Build & Test)') {
steps {
echo "Empaquetando microservicio con Maven..."
sh 'mvn clean package -DskipTests'
echo "Archivo .jar generado con éxito."
}
}
stage('Construcción de Imagen Docker') {
steps {
echo "Construyendo imagen Docker usando Temurin JDK 21..."
sh "docker build -t ${IMAGE_NAME} ."
}
}
stage('Exportación y Despliegue Secuencial') {
steps {
sshagent([SSH_CREDENTIAL_ID]) {
echo "Exportando contenedor a archivo tar. Esto toma unos segundos..."
sh "docker save ${IMAGE_NAME} > ${TAR_FILE}"
echo "Transfiriendo archivos vía SCP hacia 192.168.1.123..."
sh "scp -o StrictHostKeyChecking=no ${TAR_FILE} root@${SERVER_IP}:/tmp/${TAR_FILE}"
sh "ssh -o StrictHostKeyChecking=no root@${SERVER_IP} 'mkdir -p /yvyape/proyectos/sigem-gis/'"
sh "scp -o StrictHostKeyChecking=no docker-compose.yml root@${SERVER_IP}:/yvyape/proyectos/sigem-gis/"
echo "Levantando el Sistema Remotamente en el Nodo PostGIS..."
sh '''
ssh -o StrictHostKeyChecking=no root@${SERVER_IP} "
cd /yvyape/proyectos/sigem-gis/
docker load < /tmp/${TAR_FILE}
docker compose down
docker compose up -d
rm -f /tmp/${TAR_FILE}
echo 'Microservicio Reiniciado sin caída de datos.'
"
'''
}
}
}
}
post {
success {
echo "Despliegue del Módulo GIS completado de forma impecable. Disponible en el puerto 8081."
}
failure {
echo "La compilación o el despliegue del mapa ha fallado. Revisa los logs de SSH."
}
}
}