Instalación de Jenkins con Docker y Despliegue Automatizado para Proyectos Spring Boot Módulares


# Instalar JDK
yum install -y java-1.8.0-openjdk.x86_64
# Verificar versión
java -version

Instalación de Jenkins con Docker

2.1 Creación de directorios


cd /
mkdir -p /mydata/jenkins/jenkins_home 
mkdir -p /mydata/jenkins/localtime

2.2 Descarga de imagen y creación de contenedor


docker pull jenkins/jenkins:2.414.2

docker run --restart=always -u root -p 8080:8080 -p 50000:50000 -v /mydata/jenkins/jenkins_home:/var/jenkins_home -v /mydata/jenkins/localtime --name jenkins jenkins/jenkins:2.414.2

2.3 Inicialización de Jenkins

Para obtener la contraseña inicial:


docker logs jenkins

Introduce la contraseña mostrada en la interfaz de Jenkins.

2.4 Pasos de instalación de Jenkins

Selecciona la opción "Plugins recomendados" durante la instalación.

Instalación de Maven

3.1 Instalación mediante carga de archivo

  1. Utiliza el archivo apache-maven-3.6.3.tar.gz (puedes comprimir tu local en este formato y cargarlo)
  2. Sube el archivo al directorio /mydata creado anteriormente

3.2 Descompresión de Maven


tar -zxvf /mydata/apache-maven-3.6.3.tar.gz 

Copia el archivo descomprimido al directorio /mydata/jenkins/jenkins_home:


cp -r /mydata/apache-maven-3.6.3 /mydata/jenkins/jenkins_home

3.3 Configuración del repositorio de Maven

Asegúrate de configurar correctamente la ruta del repositorio local:


<localrepository>/mydata/jenkins/jenkins_home/apache-maven-3.6.3/m2</localrepository>

Configuración Global de Jenkins

Ruta: Dashboard > Manage Jenkins > Tools

4.1 Configuración de Maven

La ruta del archivo se encuentra dentro del contenedor de Jenkins. Sigue estos pasos para la ubicación correcta (el directorio montado):

/var/jenkins_home/apache-maven-3.6.3/conf/settings.xml


# Entrar al contenedor
docker exec -it jenkins bash

4.2 Configuración de SSH

Ruta: Dashboard > Manage Jenkins > System

Si no tienes el plugin "Publish over SSH", instálalo primero.


# Verificar dirección IP
ifconfig 
  1. En "SSH Server Name", ingresa el nombre de usuario o IP de tu máquina virtual
  2. En "Hostname", ingresa la IP de tu máquina virtual
  3. En "Username", usa "root" por defecto
  4. En "Remote Directory", ingresa "/"
  5. Guarda los cambios

4.3 Creación de un trabajo de tipo "Freestyle"

  1. Agrega la dirección del repositorio Gitee
  2. Agrega las credenciales de tu cuenta de Gitee (solo usuario y contraseña)
  3. Configura los pasos de compilación:
  • Selecciona Maven usando la variable global configurada
  • En "Goals", ingresa "clean install"
  • En "POM", especifica la ruta del archivo pom.xml dentro del contenedor: /var/jenkins_home/workspace/xxx/pom.xml

4.4 Configuración de SSH para despliegue

Utiliza los siguientes comandos (ajustando las rutas según tu configuración):


cp /mydata/jenkins/jenkins_home/workspace/jy/jy-hall/jy-service/target/jy-service-1.0-SNAPSHOT.jar /mydata/jenkins/jenkins_home/jar/

#!/bin/bash
APP_NOMBRE=jy-service-1.0-SNAPSHOT.jar
LOG_NOMBRE=jy-service-1.0-SNAPSHOT.log

pid=`ps -ef | grep $APP_NOMBRE | grep -v grep|awk '{print $2}'`

function verificar_existencia(){
pid=`ps -ef | grep $APP_NOMBRE | grep -v grep|awk '{print $2}'`
if [ -z ${pid} ]; then
Estado="noExiste"
echo $Estado
else
Estado="existe"
echo $Estado
fi
}

estado_actual=$(verificar_existencia)
if [ ${estado_actual} = "existe" ]; then
echo "Se detectó una instancia en ejecución, el PID es ${pid}"
kill -9 $pid
else
echo "El programa no está en ejecución"
echo "${APP_NOMBRE} no está ejecutándose"
fi

estado_actual=$(verificar_existencia)
if [ ${estado_actual} = "existe" ]; then
echo "${APP_NOMBRE} ya está en ejecución. PID=${pid}"
else
source /etc/profile
BUILD_ID=dontKillMe
nohup java -Xms300m -Xmx300m -jar /mydata/jenkins/jenkins_home/workspace/jy/jy-hall/jy-service/target/$APP_NOMBRE >$LOG_NOMBRE 2>&1 &
echo "El programa se ha reiniciado..."
fi
  1. Resultado

Con esta configuración, solo necesitas hacer commit de tu código en el repositorio. No será necesario ejecutar manualmente el comando java -jar xxxx.jar.

  1. Consideraciones importantes

Asegúrate de que la clase principal de tu aplicación Spring Boot tenga la siguiente configuración en el pom.xml para evitar errores de "manifiesto principal no encontraod":


    <build>
        <plugins>
            <plugin>
                <groupid>org.springframework.boot</groupid>
                <artifactid>spring-boot-maven-plugin</artifactid>
                <version>${spring-boot.version}</version>
                <configuration>
                    <mainclass>xxx.xxx.xxxApplication</mainclass>

                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
</build>

Etiquetas: Docker Jenkins despliegue-automatizado spring-boot maven

Publicado el 6-13 23:47