Cómo desplegar una aplicación spring boot con Jenkins en Windows
Contenido
¿Quieres desplegar un servicio web hecho con springboot usando Jenkins en Windows? Te cuento el procedimiento que seguí en un Windows Server 2019 y que puede ayudarte.
Escenario
- Windows Server 19
- Jenkins para windows, corriendo como servicio en el 8080
- Plugin maven
- Global Tool Configuration JDK: JDK 18
- Aplicación springboot que puede correr como servicio en 8081
- Requiere JDK 17
- Es para esta aplicación en particular, pero puede ser otra versión
- Usa maven
- Tiene un repositorio en GitHub
- Se ha probado a mano, en el server, los comandos que permiten corren localmente la aplicación
- git clone git@github.com:akobashikawa/springboot-rest-hello.git
- cd springboot-rest-hello
- mvn clean install package
- cd target
- java -jar -Dserver.port=8081 springboot-rest-hello-0.0.1-SNAPSHOT.jar
- Si todo va bien, se puede comprobar en
http://localhost:8081/hello?name=Antonio
- Requiere JDK 17
Referencias
Crear job maven
- En jenkins, New Item
- General
- Name: springboot-rest-hello-maven
- Description: Simple service that say hello
- JDK: JDK18
- Source Code Management:
git@github.com:akobashikawa/springboot-rest-hello.git
- Build Triggers
- Build whenever a SNAPSHOT dependency is built
- GitHub hook trigger for GITScm polling
- Build
- Root POM:
pom.xml
- Root POM:
- Post Steps
- Run only if build succeeds
- Execute Windows batch command
cd C:\tools\SpringbootRestHello SpringbootRestHello.exe stop copy C:\data\jenkins_home\workspace\springboot-rest-hello-maven\target\springboot-rest-hello-0.0.1-SNAPSHOT.jar C:\tools\SpringbootRestHello /Y SpringbootRestHello.exe start
Crear el servicio
- Spring Boot Application as a Service
- Descargo WinSW y lo coloco en la carpeta que usaré para configurar el servicio.
C:\tools\SpringbootRestHello
, por ejemplo
- Renombro
winsw-2.9.0-bin.exe
comoSpringbootRestHello.exe
- Creo el archivo de configuración
SpringbootRestHello.xml
<service> <id>SpringbootRestHello</id> <name>SpringbootRestHello</name> <description>Proyecto simple para probar CI.</description> <env name="SPRINGBOOTRESTHELLO_HOME" value="%BASE%"/> <executable>C:\java\jdk-18.0.1.1\bin\java</executable> <arguments>-Xmx256m -jar -Dserver.port=8081 "%BASE%\springboot-rest-hello-0.0.1-SNAPSHOT.jar"</arguments> <logmode>rotate</logmode> </service>
- Instalo el servicio
- \
C:\tools\SpringbootRestHello>SpringbootRestHello.exe install 2022-07-07 10:52:11,817 INFO - Installing the service with id 'SpringbootRestHello'
- En Services, termino de configurar
- Pruebo iniciar el servicio
- Si hubiera algún error, se puede revisar en
SpringbootRestHello\SpringbootRestHello.err.log
- Reviso que el logon lo haga mi usuario
- Debe estar habilitado para iniciar servicios, según se explica en Cómo instalar Jenkins en Windows
- Reviso que el logon lo haga mi usuario
Prueba manual
- En jenkins, Dashboard, seleccionar el proyecto
- En el menú, Build Now
- Haciendo click sobre el número del build se puede acceder a la salida en consola
- Si todo va bien, se puede comprobar en
http://localhost:8081/hello?name=Antonio
Espero te sirva de ayuda.
¿Has encontrado alguna mejor manera de hacerlo? Puedes compartirlo en los comentarios 🙏