En este ejercicio, configuraremos un pipeline básico de CI/CD utilizando Jenkins, una de las herramientas más populares en el ámbito de CI/CD. Este pipeline realizará las siguientes tareas:
- Clonar el repositorio desde GitHub.
- Construir el proyecto.
- Ejecutar pruebas automatizadas.
- Generar un artefacto (por ejemplo, un archivo JAR).
- Notificar el estado del build.
Paso 1: Preparación del Entorno
Requisitos Previos
- Tener Jenkins instalado y en funcionamiento.
- Tener un repositorio de GitHub con un proyecto simple (puede ser un proyecto Java, Node.js, etc.).
- Tener configurado un agente de Jenkins (puede ser el mismo servidor donde está Jenkins).
Configuración de Jenkins
-
Instalar los Plugins Necesarios:
- Git Plugin
- Pipeline Plugin
- Email Extension Plugin (opcional, para notificaciones)
-
Crear un Nuevo Job de Pipeline:
- Navega a Jenkins Dashboard.
- Haz clic en "New Item".
- Introduce un nombre para el job (por ejemplo, "Pipeline Básico").
- Selecciona "Pipeline" y haz clic en "OK".
Paso 2: Definir el Pipeline
Script del Pipeline
A continuación, se muestra un ejemplo de script para un pipeline básico en Jenkins. Este script se escribe en Groovy, el lenguaje de scripting que utiliza Jenkins para sus pipelines.
pipeline { agent any stages { stage('Clonar Repositorio') { steps { git 'https://github.com/tu-usuario/tu-repositorio.git' } } stage('Construir Proyecto') { steps { // Comando para construir el proyecto // Ejemplo para un proyecto Java con Maven: sh 'mvn clean install' } } stage('Ejecutar Pruebas') { steps { // Comando para ejecutar pruebas // Ejemplo para un proyecto Java con Maven: sh 'mvn test' } } stage('Generar Artefacto') { steps { // Comando para generar el artefacto // Ejemplo para un proyecto Java con Maven: archiveArtifacts artifacts: '**/target/*.jar', allowEmptyArchive: true } } } post { success { echo 'El build ha sido exitoso!' } failure { echo 'El build ha fallado.' } } }
Explicación del Script
- pipeline { ... }: Define el bloque principal del pipeline.
- agent any: Indica que el pipeline puede ejecutarse en cualquier agente disponible.
- stages { ... }: Contiene todos los stages del pipeline.
- stage('Clonar Repositorio') { ... }: Clona el repositorio desde GitHub.
- stage('Construir Proyecto') { ... }: Construye el proyecto utilizando Maven.
- stage('Ejecutar Pruebas') { ... }: Ejecuta las pruebas del proyecto.
- stage('Generar Artefacto') { ... }: Genera y archiva el artefacto resultante.
- post { ... }: Define acciones a realizar después de que el pipeline se haya completado.
- success { ... }: Acciones a realizar si el pipeline es exitoso.
- failure { ... }: Acciones a realizar si el pipeline falla.
Paso 3: Ejecutar el Pipeline
-
Guardar el Script:
- En la configuración del job, desplázate hacia abajo hasta la sección "Pipeline".
- Selecciona "Pipeline script" y pega el script anterior.
- Haz clic en "Save".
-
Ejecutar el Job:
- En el dashboard del job, haz clic en "Build Now".
- Observa la ejecución del pipeline en la consola de salida.
Ejercicio Práctico
Tarea
Configura un pipeline similar al anterior, pero adaptado a tu propio proyecto. Asegúrate de:
- Clonar tu propio repositorio.
- Utilizar los comandos de construcción y pruebas específicos de tu proyecto.
- Generar y archivar los artefactos relevantes.
Solución
A continuación, se muestra un ejemplo de cómo podría verse el script adaptado para un proyecto Node.js:
pipeline { agent any stages { stage('Clonar Repositorio') { steps { git 'https://github.com/tu-usuario/tu-repositorio-nodejs.git' } } stage('Instalar Dependencias') { steps { sh 'npm install' } } stage('Ejecutar Pruebas') { steps { sh 'npm test' } } stage('Generar Artefacto') { steps { archiveArtifacts artifacts: '**/dist/*.js', allowEmptyArchive: true } } } post { success { echo 'El build ha sido exitoso!' } failure { echo 'El build ha fallado.' } } }
Conclusión
En este ejercicio, hemos configurado un pipeline básico de CI/CD utilizando Jenkins. Hemos cubierto los pasos esenciales desde clonar un repositorio hasta generar un artefacto y notificar el estado del build. Este pipeline básico puede servir como base para pipelines más complejos y personalizados según las necesidades de tu proyecto.
Resumen
- Configuración de Jenkins y creación de un job de pipeline.
- Definición de un script de pipeline básico.
- Ejecución y monitoreo del pipeline.
- Adaptación del pipeline a proyectos específicos.
En el siguiente ejercicio, profundizaremos en la integración de pruebas automatizadas dentro del pipeline.
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