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.
- 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.
- 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
Ejemplo de Agente Específico para una Etapa
pipeline {
agent none
stages {
stage('Build') {
agent {
label 'linux'
}
steps {
echo 'Building on a Linux agent...'
}
}
}
}
- 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
- 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'
}
}
}
- 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}"
}
}
}
}
- Ejercicio Práctico
Ejercicio
Crea una pipeline declarativa que tenga las siguientes características:
- Un agente global que se ejecute en cualquier nodo.
- Tres etapas: "Checkout", "Build" y "Test".
- En la etapa "Checkout", clona un repositorio de Git.
- En la etapa "Build", compila el código (puedes simularlo con un comando
echo). - En la etapa "Test", ejecuta pruebas (puedes simularlo con un comando
echo). - Agrega una sección
postque 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
- 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
