CI/CD para proyectos Java: configuración de GitHub Actions

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 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/*.jar

Este 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:check

Estos pasos ayudarán a identificar automáticamente problemas en

Blogs

Book Recommendations