En este tema, aprenderemos cómo ejecutar tareas en paralelo dentro de una pipeline de Jenkins. La ejecución paralela es una característica poderosa que permite reducir el tiempo total de ejecución de una pipeline al realizar múltiples tareas simultáneamente.
Conceptos Clave
- Etapas (Stages): Las etapas son bloques de una pipeline que agrupan una serie de pasos (steps). Cada etapa puede contener múltiples pasos que se ejecutan secuencialmente.
- Pasos (Steps): Los pasos son las acciones individuales que se ejecutan dentro de una etapa.
- Paralelismo: La capacidad de ejecutar múltiples etapas o pasos al mismo tiempo.
Ejecución Paralela en Pipelines Declarativas
En una pipeline declarativa, la ejecución paralela se define utilizando la palabra clave parallel
. A continuación, se muestra un ejemplo básico de cómo configurar una ejecución paralela:
pipeline { agent any stages { stage('Build and Test') { parallel { stage('Build') { steps { echo 'Building...' // Aquí irían los comandos de construcción } } stage('Test') { steps { echo 'Testing...' // Aquí irían los comandos de prueba } } } } } }
Explicación del Código
- pipeline: Define la pipeline.
- agent any: Indica que la pipeline puede ejecutarse en cualquier agente disponible.
- stages: Agrupa todas las etapas de la pipeline.
- stage('Build and Test'): Define una etapa que contiene tareas paralelas.
- parallel: Indica que las etapas dentro de este bloque deben ejecutarse en paralelo.
- stage('Build') y stage('Test'): Definen las etapas individuales que se ejecutarán en paralelo.
- steps: Contiene los pasos que se ejecutarán dentro de cada etapa.
Ejecución Paralela en Pipelines Scriptadas
En una pipeline scriptada, la ejecución paralela se logra utilizando la función parallel
. Aquí hay un ejemplo:
node { stage('Build and Test') { parallel( build: { echo 'Building...' // Aquí irían los comandos de construcción }, test: { echo 'Testing...' // Aquí irían los comandos de prueba } ) } }
Explicación del Código
- node: Define un nodo en el que se ejecutará la pipeline.
- stage('Build and Test'): Define una etapa que contiene tareas paralelas.
- parallel: Función que permite definir tareas paralelas.
- build y test: Son las tareas paralelas definidas como bloques de código.
Ejemplo Práctico
Vamos a crear una pipeline que construya, pruebe y despliegue una aplicación en paralelo.
Pipeline Declarativa
pipeline { agent any stages { stage('Build, Test and Deploy') { parallel { stage('Build') { steps { echo 'Building...' // Comandos de construcción } } stage('Test') { steps { echo 'Testing...' // Comandos de prueba } } stage('Deploy') { steps { echo 'Deploying...' // Comandos de despliegue } } } } } }
Pipeline Scriptada
node { stage('Build, Test and Deploy') { parallel( build: { echo 'Building...' // Comandos de construcción }, test: { echo 'Testing...' // Comandos de prueba }, deploy: { echo 'Deploying...' // Comandos de despliegue } ) } }
Ejercicio Práctico
Ejercicio
Crea una pipeline que ejecute las siguientes tareas en paralelo:
- Compilar el código.
- Ejecutar pruebas unitarias.
- Analizar el código con una herramienta de análisis estático.
Solución
pipeline { agent any stages { stage('Build, Test and Analyze') { parallel { stage('Build') { steps { echo 'Building...' // Comandos de construcción } } stage('Test') { steps { echo 'Running Unit Tests...' // Comandos de pruebas unitarias } } stage('Analyze') { steps { echo 'Analyzing Code...' // Comandos de análisis estático } } } } } }
Resumen
En esta sección, hemos aprendido cómo configurar la ejecución paralela en pipelines de Jenkins tanto en pipelines declarativas como scriptadas. La ejecución paralela es una técnica esencial para optimizar el tiempo de ejecución de las pipelines al permitir que múltiples tareas se realicen simultáneamente. Practica creando tus propias pipelines con tareas paralelas para familiarizarte con esta poderosa característica.
Jenkins: De Principiante a Avanzado
Módulo 1: Introducción a Jenkins
Módulo 2: Conceptos Básicos de Jenkins
- Visión General del Tablero de Jenkins
- Creación y Ejecución de Trabajos
- Entendiendo las Pipelines de Jenkins
- Usando Plugins de Jenkins
Módulo 3: Pipelines de Jenkins
- Pipeline como Código
- Pipelines Declarativas vs Scriptadas
- Creando una Pipeline Simple
- Sintaxis de Pipeline
Módulo 4: Pipelines Avanzadas de Jenkins
- Etapas y Pasos de Pipeline
- Ejecución Paralela en Pipelines
- Usando Variables de Entorno
- Mejores Prácticas de Pipeline
Módulo 5: Administración de Jenkins
- Gestionando Nodos de Jenkins
- Configurando Seguridad
- Respaldo y Restauración de Jenkins
- Monitoreando Jenkins
Módulo 6: Integrando Jenkins
- Integración con Sistemas de Control de Versiones
- Integración con Herramientas de Construcción
- Integración con Herramientas de Pruebas
- Integración con Herramientas de Despliegue
Módulo 7: Jenkins para Integración Continua y Entrega Continua (CI/CD)
- Entendiendo CI/CD
- Configurando una Pipeline de CI
- Configurando una Pipeline de CD
- Automatizando Despliegues
Módulo 8: Temas Avanzados de Jenkins
- Usando Jenkins con Docker
- Jenkins y Kubernetes
- Jenkins como Código con Jenkinsfile
- Escalando Jenkins