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

  1. 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.
  2. Pasos (Steps): Los pasos son las acciones individuales que se ejecutan dentro de una etapa.
  3. 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:

  1. Compilar el código.
  2. Ejecutar pruebas unitarias.
  3. 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

Módulo 3: Pipelines de Jenkins

Módulo 4: Pipelines Avanzadas de Jenkins

Módulo 5: Administración de Jenkins

Módulo 6: Integrando Jenkins

Módulo 7: Jenkins para Integración Continua y Entrega Continua (CI/CD)

Módulo 8: Temas Avanzados de Jenkins

Módulo 9: Mejores Prácticas y Solución de Problemas en Jenkins

© Copyright 2024. Todos los derechos reservados