En este ejercicio, aprenderás a integrar pruebas automatizadas en un pipeline de CI/CD. Las pruebas automatizadas son esenciales para asegurar la calidad del software y detectar errores en etapas tempranas del desarrollo.
Objetivos del Ejercicio
- Configurar un entorno de pruebas automatizadas.
- Integrar las pruebas en un pipeline de CI/CD.
- Ejecutar y verificar los resultados de las pruebas.
Paso 1: Configuración del Entorno de Pruebas Automatizadas
Herramientas Necesarias
- Jenkins: Para la automatización del pipeline.
- JUnit: Para las pruebas unitarias en un proyecto Java.
- Git: Para el control de versiones.
Estructura del Proyecto
Asegúrate de que tu proyecto tenga la siguiente estructura:
my-java-app/ ├── src/ │ └── main/ │ └── java/ │ └── com/ │ └── example/ │ └── App.java ├── src/ │ └── test/ │ └── java/ │ └── com/ │ └── example/ │ └── AppTest.java ├── pom.xml └── Jenkinsfile
Ejemplo de Código
App.java
package com.example; public class App { public static void main(String[] args) { System.out.println("Hello, World!"); } public int add(int a, int b) { return a + b; } }
AppTest.java
package com.example; import static org.junit.Assert.assertEquals; import org.junit.Test; public class AppTest { @Test public void testAdd() { App app = new App(); assertEquals(5, app.add(2, 3)); } }
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>my-java-app</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> </project>
Paso 2: Integración de Pruebas en el Pipeline de CI/CD
Jenkinsfile
Crea un archivo Jenkinsfile
en la raíz de tu proyecto con el siguiente contenido:
pipeline { agent any stages { stage('Build') { steps { sh 'mvn clean package' } } stage('Test') { steps { sh 'mvn test' } } } post { always { junit 'target/surefire-reports/*.xml' } } }
Explicación del Jenkinsfile
- agent any: Indica que el pipeline puede ejecutarse en cualquier agente disponible.
- stages: Define las etapas del pipeline.
- Build: Ejecuta el comando
mvn clean package
para compilar el proyecto. - Test: Ejecuta el comando
mvn test
para correr las pruebas unitarias.
- Build: Ejecuta el comando
- post: Define acciones a realizar después de las etapas.
- always: Siempre publica los resultados de las pruebas en formato JUnit.
Paso 3: Ejecutar y Verificar los Resultados
-
Configurar Jenkins:
- Asegúrate de tener Jenkins instalado y configurado.
- Crea un nuevo proyecto en Jenkins y configura el repositorio Git donde se encuentra tu proyecto.
-
Ejecutar el Pipeline:
- Inicia la ejecución del pipeline desde la interfaz de Jenkins.
- Observa las etapas de construcción y pruebas en tiempo real.
-
Verificar Resultados:
- Una vez completado el pipeline, verifica los resultados de las pruebas en la sección "Test Result" de Jenkins.
- Asegúrate de que todas las pruebas hayan pasado.
Ejercicio Práctico
Tarea
- Modifica el método
add
enApp.java
para que falle una de las pruebas. - Ejecuta el pipeline nuevamente y observa cómo Jenkins reporta el fallo en las pruebas.
- Corrige el método
add
y vuelve a ejecutar el pipeline para asegurarte de que todas las pruebas pasen.
Solución
Modificación en App.java
para provocar un fallo
Corrección en App.java
Conclusión
En este ejercicio, has aprendido a configurar un entorno de pruebas automatizadas, integrar las pruebas en un pipeline de CI/CD y verificar los resultados. Las pruebas automatizadas son una parte crucial del proceso de CI/CD, ya que ayudan a mantener la calidad del software y a detectar errores de manera temprana.
Continúa con el siguiente ejercicio para aprender más sobre el despliegue en un entorno de producción.
Curso de CI/CD: Integración y Despliegue Continuo
Módulo 1: Introducción a CI/CD
Módulo 2: Integración Continua (CI)
- Introducción a la Integración Continua
- Configuración de un Entorno de CI
- Automatización de la Construcción
- Pruebas Automatizadas
- Integración con Control de Versiones
Módulo 3: Despliegue Continuo (CD)
- Introducción al Despliegue Continuo
- Automatización del Despliegue
- Estrategias de Despliegue
- Monitoreo y Retroalimentación
Módulo 4: Prácticas Avanzadas de CI/CD
Módulo 5: Implementación de CI/CD en Proyectos Reales
Módulo 6: Herramientas y Tecnologías
Módulo 7: Ejercicios Prácticos
- Ejercicio 1: Configuración de un Pipeline Básico
- Ejercicio 2: Integración de Pruebas Automatizadas
- Ejercicio 3: Despliegue en un Entorno de Producción
- Ejercicio 4: Monitoreo y Retroalimentación