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 packagepara compilar el proyecto. - Test: Ejecuta el comando
mvn testpara 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
addenApp.javapara 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
addy 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
