Go to file
2026-03-19 13:46:30 +01:00
.github/workflows cargar workflow 2026-03-18 18:42:09 +01:00
.settings Incluir información de CI/CD 2026-03-18 17:52:49 +01:00
src Incluir información de CI/CD 2026-03-18 17:52:49 +01:00
.classpath Incluir información de CI/CD 2026-03-18 17:52:49 +01:00
.gitignore Commit inicial 2026-03-13 10:19:18 +01:00
.project Commit inicial 2026-03-13 10:19:18 +01:00
docker-compose.yml incluye docker-compose.yml 2026-03-19 13:46:30 +01:00
Dockerfile incluye Dockerfile 2026-03-19 11:30:50 +01:00
pom.xml Incluir información de CI/CD 2026-03-18 17:52:49 +01:00
README.md Actualizar README.md 2026-03-18 18:46:43 +01:00

CI/CD con Maven y GitHub Actions

1. Estructura del proyecto Maven

Un proyecto Maven bien organizado es la base para que el pipeline de CI funcione sin problemas:

proyecto/
├── src/
│   ├── main/java/     # Código de producción
│   └── test/java/     # Tests unitarios
└── pom.xml            # Dependencias, plugins y versión de Java

Regla clave: Si mvn clean install funciona en local → debe funcionar en CI.


2. Dependencias y plugins esenciales

Testing

  • spring-boot-starter-test (proyectos Spring Boot): incluye JUnit 5, AssertJ y Mockito.

Plugins Maven importantes

Plugin Función
maven-compiler-plugin Compila el proyecto
maven-surefire-plugin Ejecuta tests unitarios
maven-failsafe-plugin Ejecuta tests de integración (opcional)

3. Tests

Buenas prácticas para que los tests pasen en un entorno limpio de CI:

  • Deben ejecutarse sin depender del IDE.
  • Evitar dependencias de rutas locales o bases de datos externas → usar H2 en memoria si es necesario.
  • Nombres descriptivos con un único escenario por test:
    metodo_cuandoCondicion_retornaResultado
    

4. Flujo básico con GitHub Actions

Archivo de configuración: .github/workflows/ci-mvn.yml

name: CI con Maven

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

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - name: Set up JDK
        uses: actions/setup-java@v3
        with:
          java-version: '23'
          distribution: 'temurin'

      - name: Cache Maven packages
        uses: actions/cache@v3
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
          restore-keys: |
            ${{ runner.os }}-maven-            

      - name: Build with Maven
        run: mvn clean install

¿Qué hace mvn clean install?

  1. clean → Elimina artefactos anteriores
  2. compile → Compila el código fuente
  3. test → Ejecuta los tests unitarios
  4. package → Genera el .jar o .war

Si algún test falla, GitHub Actions marcará el workflow como Failed


5. Buenas prácticas

  1. Mantén el pom.xml limpio: no sobreescribas versiones de dependencias gestionadas por Spring Boot.
  2. Evita dependencias del entorno local: sin rutas absolutas ni servicios externos sin mock.
  3. Usa perfiles Maven si necesitas configuraciones distintas para CI (p. ej., base de datos H2 para tests).
  4. Verifica la versión de Java: el runner de GitHub Actions debe usar la misma que la configurada en el proyecto.
  5. Habilita la caché de Maven: reduce significativamente el tiempo de build en cada ejecución.

Fuentes: ChatGPT + Claude