En este tema, exploraremos la sintaxis de las pipelines en Jenkins. Las pipelines son una parte fundamental de Jenkins, ya que permiten definir y automatizar flujos de trabajo complejos. Jenkins soporta dos tipos de sintaxis para pipelines: Declarativa y Scriptada. Aquí, nos enfocaremos en la sintaxis declarativa, que es más estructurada y fácil de leer.

  1. Estructura Básica de una Pipeline Declarativa

Una pipeline declarativa sigue una estructura específica que facilita la definición de las etapas y pasos del flujo de trabajo. A continuación, se muestra un ejemplo básico:

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Building...'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing...'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying...'
            }
        }
    }
}

Desglose del Ejemplo

  • pipeline: Define el bloque principal de la pipeline.
  • agent any: Indica que la pipeline puede ejecutarse en cualquier agente disponible.
  • stages: Contiene una lista de etapas (stage), cada una representando una fase del pipeline.
  • stage('Build'): Define una etapa llamada "Build".
  • steps: Contiene los pasos a ejecutar dentro de una etapa.
  • echo 'Building...': Un paso que imprime un mensaje en la consola.

  1. Agentes

Los agentes especifican dónde se ejecutará la pipeline o una etapa específica. Los agentes pueden ser globales (para toda la pipeline) o específicos para una etapa.

Ejemplo de Agente Global

pipeline {
    agent any
    stages {
        // Etapas aquí
    }
}

Ejemplo de Agente Específico para una Etapa

pipeline {
    agent none
    stages {
        stage('Build') {
            agent {
                label 'linux'
            }
            steps {
                echo 'Building on a Linux agent...'
            }
        }
    }
}

  1. Etapas y Pasos

Las etapas (stage) son bloques que agrupan pasos (steps). Cada etapa puede contener múltiples pasos.

Ejemplo de Múltiples Pasos en una Etapa

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Building...'
                sh 'make build'
            }
        }
    }
}

  1. Post Sección

La sección post permite definir acciones que se ejecutan al final de la pipeline o de una etapa, dependiendo del resultado (éxito, fallo, siempre).

Ejemplo de Sección Post

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Building...'
            }
        }
    }
    post {
        always {
            echo 'This will always run'
        }
        success {
            echo 'This will run only if the pipeline succeeds'
        }
        failure {
            echo 'This will run only if the pipeline fails'
        }
    }
}

  1. Parámetros

Las pipelines pueden aceptar parámetros que permiten personalizar su ejecución.

Ejemplo de Parámetros

pipeline {
    agent any
    parameters {
        string(name: 'BRANCH_NAME', defaultValue: 'main', description: 'Branch to build')
    }
    stages {
        stage('Build') {
            steps {
                echo "Building branch ${params.BRANCH_NAME}"
            }
        }
    }
}

  1. Ejercicio Práctico

Ejercicio

Crea una pipeline declarativa que tenga las siguientes características:

  1. Un agente global que se ejecute en cualquier nodo.
  2. Tres etapas: "Checkout", "Build" y "Test".
  3. En la etapa "Checkout", clona un repositorio de Git.
  4. En la etapa "Build", compila el código (puedes simularlo con un comando echo).
  5. En la etapa "Test", ejecuta pruebas (puedes simularlo con un comando echo).
  6. Agrega una sección post que imprima un mensaje de éxito si la pipeline se ejecuta correctamente.

Solución

pipeline {
    agent any
    stages {
        stage('Checkout') {
            steps {
                git 'https://github.com/tu-repositorio.git'
            }
        }
        stage('Build') {
            steps {
                echo 'Building the project...'
            }
        }
        stage('Test') {
            steps {
                echo 'Running tests...'
            }
        }
    }
    post {
        success {
            echo 'Pipeline completed successfully!'
        }
    }
}

Conclusión

En este tema, hemos cubierto la sintaxis básica de las pipelines declarativas en Jenkins. Aprendimos sobre la estructura general, cómo definir agentes, etapas, pasos, secciones post y parámetros. Con esta base, estarás preparado para crear pipelines más complejas y personalizadas en Jenkins. En el próximo módulo, profundizaremos en las pipelines avanzadas, incluyendo la ejecución paralela y el uso de variables de entorno.

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