¿Todavía despliega su aplicación Java por SSH?
\n\nSi alguna vez ha configurado un proyecto Java en producción manualmente — mvn clean install, scp al servidor, matar el proceso, reiniciar — conoce esa sensación: todo parece funcionar, pero cada despliegue es como una misión contra un jefe final. Una bandera olvidada, una versión incorrecta de Java, y la aplicación se cae, mientras usted recibe un mensaje de «El servidor no responde» a las 3 de la mañana.
Hoy analizaremos cómo construir un pipeline CI/CD para Java desde cero. No importa si usa Spring Boot, Micronaut o el clásico Java EE — este pipeline le ahorrará nervios y tiempo. Usaremos Jenkins, Maven, Docker y GitHub. Todo será real: con código, configuraciones y ejemplos prácticos.
\n\n\n\n
¿Qué es CI/CD y por qué lo necesita un desarrollador Java?
\n\nCI/CD (Integración Continua / Entrega Continua) no es solo una palabra de moda. Es un proceso que transforma su código de «escrito a las apuradas» a «funciona establemente en el servidor» sin su intervención.
\n\n- \n
- Integración Continua — cada uno de sus commits se compila y prueba automáticamente. Si las pruebas fallan, lo sabe al instante, no una semana después. \n
- Entrega Continua — tras una compilación exitosa, el código se despliega automáticamente en el servidor de pruebas o producción. \n
Para Java esto es especialmente importante: compilación con Maven/Gradle, ejecución de pruebas unitarias, pruebas de integración, verificación del estilo del código — todo esto se puede y se debe automatizar. De lo contrario, perderá horas en tareas rutinarias en lugar de escribir funcionalidades.
\n\n\n\n
Paso 1. Preparación del entorno: qué necesitaremos
\n\nAntes de escribir el pipeline, asegurémonos de tener todas las herramientas. Para nuestro pipeline CI/CD para Java necesitaremos:
\n\n- \n
- GitHub (o GitLab/Bitbucket) — repositorio con el código. \n
- Jenkins — servidor de automatización. Se puede levantar localmente o en un VPS. \n
- Maven — compilador del proyecto Java. \n
- Docker — para la contenerización de la aplicación. \n
- Servidor (o nube) — donde desplegaremos. \n
Instalemos Jenkins en Ubuntu (si tiene otro sistema operativo, no importa, el principio es el mismo):
\n\nsudo apt update\nsudo apt install openjdk-11-jdk\nwget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -\nsudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'\nsudo apt update\nsudo apt install jenkins\nsudo systemctl start jenkins\n\n\nDespués de la instalación, abra http://su-servidor:8080 y realice la configuración inicial. No olvide instalar los plugins: Git, Maven Integration, Docker Pipeline, Blue Ocean (para una interfaz atractiva).
\n\n
Paso 2. Escribimos un proyecto Java simple (Spring Boot)
\n\nPara tener algo con qué practicar, crearemos un servicio mínimo de Spring Boot. Si ya tiene un proyecto, simplemente omita este paso.
\n\n// Main.java\npackage com.example.demo;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\n@SpringBootApplication\n@RestController\npublic class DemoApplication {\n\n public static void main(String[] args) {\n SpringApplication.run(DemoApplication.class, args);\n }\n\n @GetMapping("/")\n public String hello() {\n return "Hello from CI/CD pipeline!";\n }\n}\n\n\nNo olvide el pom.xml con las dependencias. Un Spring Boot starter normal + el plugin Maven compiler. Este será nuestro conejillo de indias.
\n\n
Paso 3. Creamos el Jenkinsfile — el corazón del pipeline
\n\nJenkinsfile es la declaración