CI/CD para Java: GitHub Actions desde la configuración hasta el despliegue

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: Por qué CI/CD es Imprescindible para Desarrolladores Java

El desarrollo Java moderno es impensable sin automatización. Ejecutar pruebas manualmente, construir archivos .jar e implementar en un servidor lleva horas y provoca errores humanos. CI/CD (Integración Continua / Despliegue Continuo) resuelve este problema: cada commit en el repositorio se verifica, construye y, si es necesario, envía a producción automáticamente.

GitHub Actions es una herramienta integrada de GitHub que permite crear pipelines directamente en el repositorio. Es gratuita para proyectos públicos, se integra fácilmente con Maven/Gradle y es compatible con Java 8–21. En este artículo, cubriremos el ciclo completo: desde un trigger push hasta la publicación de un artifact.



1. Conceptos Básicos de GitHub Actions: Estructura del Workflow

Un workflow es un archivo YAML ubicado en .github/workflows/. Consiste en:

  • Triggers (push, pull_request, schedule);
  • Jobs que se ejecutan en máquinas virtuales (runners);
  • Steps dentro de cada job.

Para un proyecto Java, un workflow típico incluye configurar el JDK, ejecutar pruebas con Maven/Gradle y construir el artifact.



1.1. Primer Workflow: Pruebas de un Proyecto Java

Cree un archivo .github/workflows/ci.yml con el siguiente contenido:

name: Java CI

on: push: branches: [ "main" ] pull_request: branches: [ "main" ]

jobs: build: runs-on: ubuntu-latest

steps: - uses: actions/checkout@v4 - name: Set up JDK 17 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' cache: maven - name: Build with Maven run: mvn -B package --file pom.xml - name: Run tests run: mvn test

¿Qué sucede aquí?:

  • actions/checkout — clona el repositorio;
  • setup-java — instala JDK 17 (Temurin) y almacena en caché las dependencias de Maven;
  • mvn package — construye el proyecto y ejecuta las pruebas;
  • mvn test — ejecuta las pruebas explícitamente (se puede combinar con package).

Después de hacer push a main, verá una marca de verificación verde junto al commit — esto significa que el pipeline se ejecutó correctamente.



2. Configuración Avanzada para Java: Matriz de Versiones y Caché

Los proyectos reales a menudo requieren pruebas en múltiples versiones de Java. GitHub Actions admite una estrategia de matriz.



2.1. Matriz de JDK

jobs:  test:    runs-on: ubuntu-latest    strategy:      matrix:        java: [11, 17, 21]    steps:    - uses: actions/checkout@v4    - name: Set up JDK ${{ matrix.java }}      uses: actions/setup-java@v4      with:        java-version: ${{ matrix.java }}        distribution: 'temurin'        cache: maven    - run: mvn test

Este enfoque garantiza que su código sea compatible con las versiones LTS de Java. Los trabajos se ejecutan en paralelo, ahorrando tiempo.



2.2. Caché de Dependencias

Ya especificamos cache: maven — esto almacena automáticamente en caché ~/.m2/repository. Para Gradle, use cache: gradle. El almacenamiento en caché acelera la compilación entre 2 y 3 veces.



3. Construcción y Publicación de Artifacts (JAR/Docker)

Después de las pruebas exitosas, necesita obtener un artifact listo. Veamos dos escenarios populares.



3.1. Subir un Archivo JAR a GitHub Artifacts

jobs:  build:    runs-on: ubuntu-latest    steps:    - uses: actions/checkout@v4    - name: Set up JDK 17      uses: actions/setup-java@v4      with:        java-version: '17'        distribution: 'temurin'    - run: mvn clean package    - name: Upload JAR      uses: actions/upload-artifact@v4      with:

Blogs

Book Recommendations