Introducción a CI/CD para Proyectos Java con GitHub Actions
El desarrollo de software moderno es imposible sin la automatización de los procesos de compilación, prueba e implementación. CI/CD (Integración Continua / Despliegue Continuo) es un conjunto de prácticas que permite a los equipos entregar cambios a producción de forma rápida y segura. Para proyectos Java, una de las herramientas más convenientes es GitHub Actions — un sistema CI/CD integrado que no requiere configurar un servidor separado.
En este artículo, recorreremos cómo configurar un pipeline para una aplicación Java: desde la compilación y ejecución de pruebas hasta la publicación de artefactos. Aprenderás a usar Maven, JUnit y GitHub Actions para crear un proceso de entrega confiable.
1. Conceptos Básicos de GitHub Actions: Estructura del Workflow
GitHub Actions se basa en workflows — archivos de configuración en formato YAML almacenados en la carpeta .github/workflows. Cada workflow consta de uno o más jobs que se ejecutan en máquinas virtuales (runners).
Para un proyecto Java, un workflow típico incluye los siguientes pasos:
- Checkout — clonar el repositorio
- Setup JDK — instalar la versión de Java requerida
- Cache — almacenar en caché las dependencias de Maven/Gradle para acelerar la compilación
- Build & Test — compilación y ejecución de pruebas
- Deploy — publicar artefactos (opcional)
Veamos un ejemplo de configuración básica para Java 17 y Maven:
name: Java CI with Maven
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
- name: Upload JAR artifact uses: actions/upload-artifact@v4 with: name: app-jar path: target/*.jarEste workflow se ejecuta en cada push o pull request a la rama main. Compila el proyecto, ejecuta pruebas y guarda el archivo JAR como un artefacto.
2. Configuración Avanzada: Pruebas y Calidad del Código
Una compilación simple es solo el comienzo. En proyectos reales, es importante controlar la calidad del código. Agreguemos pasos para el análisis estático y la generación de informes al workflow.
Primero, integremos JaCoCo para medir la cobertura de código de las pruebas. Agrega el plugin a pom.xml:
<plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.11</version> <executions> <execution> <goals><goal>prepare-agent</goal></goals> </execution> <execution> <id>report</id> <phase>test</phase> <goals><goal>report</goal></goals> </execution> </executions></plugin>Ahora, actualicemos el workflow agregando verificaciones de cobertura y publicando el informe:
- name: Run tests with coverage run: mvn verify
- name: Upload JaCoCo report uses: actions/upload-artifact@v4 with: name: coverage-report path: target/site/jacoco/También puedes agregar un linter como Checkstyle o SpotBugs. Ejemplo para Checkstyle:
- name: Checkstyle run: mvn checkstyle:checkEstos pasos ayudarán a identificar automáticamente problemas en