Las variables de entorno son una herramienta poderosa en Jenkins que permite a los usuarios almacenar y utilizar información de manera dinámica en sus pipelines. Estas variables pueden contener datos como rutas de archivos, credenciales, configuraciones específicas del entorno, y más. En esta sección, aprenderemos cómo utilizar variables de entorno en Jenkins para hacer nuestras pipelines más flexibles y reutilizables.

Conceptos Clave

  1. Variables de Entorno Predefinidas: Jenkins proporciona una serie de variables de entorno predefinidas que se pueden utilizar en cualquier pipeline.
  2. Definición de Variables de Entorno: Cómo definir y utilizar variables de entorno personalizadas en una pipeline.
  3. Uso de Credenciales: Cómo manejar credenciales de manera segura utilizando variables de entorno.
  4. Contexto de Variables: Entender el alcance y la persistencia de las variables de entorno en diferentes etapas de la pipeline.

Variables de Entorno Predefinidas

Jenkins proporciona una serie de variables de entorno predefinidas que se pueden utilizar en cualquier pipeline. Algunas de las más comunes son:

Variable Descripción
BUILD_NUMBER El número de construcción actual.
BUILD_ID El ID de construcción actual.
JOB_NAME El nombre del trabajo Jenkins.
WORKSPACE La ruta del directorio de trabajo donde se ejecuta la construcción.
JENKINS_HOME La ruta del directorio de instalación de Jenkins.
GIT_COMMIT El hash del commit actual si se está utilizando Git.
BRANCH_NAME El nombre de la rama actual si se está utilizando Git.

Ejemplo de Uso

pipeline {
    agent any
    stages {
        stage('Print Environment Variables') {
            steps {
                script {
                    echo "Build Number: ${env.BUILD_NUMBER}"
                    echo "Job Name: ${env.JOB_NAME}"
                    echo "Workspace: ${env.WORKSPACE}"
                }
            }
        }
    }
}

En este ejemplo, estamos utilizando las variables de entorno predefinidas BUILD_NUMBER, JOB_NAME y WORKSPACE para imprimir información sobre la construcción actual.

Definición de Variables de Entorno Personalizadas

Puedes definir tus propias variables de entorno dentro de una pipeline para almacenar y reutilizar información.

Ejemplo de Definición y Uso

pipeline {
    agent any
    environment {
        CUSTOM_VAR = 'Hello, Jenkins!'
    }
    stages {
        stage('Use Custom Variable') {
            steps {
                script {
                    echo "Custom Variable: ${env.CUSTOM_VAR}"
                }
            }
        }
    }
}

En este ejemplo, hemos definido una variable de entorno personalizada CUSTOM_VAR y la hemos utilizado en la etapa Use Custom Variable.

Uso de Credenciales

Jenkins permite manejar credenciales de manera segura utilizando variables de entorno. Las credenciales se pueden almacenar en el sistema de Jenkins y luego referenciarlas en las pipelines.

Ejemplo de Uso de Credenciales

  1. Almacenar Credenciales: Primero, almacena las credenciales en Jenkins (por ejemplo, un token de API).

  2. Referenciar Credenciales en la Pipeline:

pipeline {
    agent any
    environment {
        API_TOKEN = credentials('my-api-token')
    }
    stages {
        stage('Use API Token') {
            steps {
                script {
                    echo "Using API Token: ${env.API_TOKEN}"
                    // Aquí podrías usar el token para autenticarte en una API
                }
            }
        }
    }
}

En este ejemplo, my-api-token es el ID de las credenciales almacenadas en Jenkins. La variable de entorno API_TOKEN se utiliza para acceder al valor de las credenciales de manera segura.

Contexto de Variables

Es importante entender el alcance y la persistencia de las variables de entorno en diferentes etapas de la pipeline. Las variables definidas en el bloque environment están disponibles en todas las etapas de la pipeline.

Ejemplo de Contexto de Variables

pipeline {
    agent any
    environment {
        GLOBAL_VAR = 'I am global'
    }
    stages {
        stage('Stage 1') {
            steps {
                script {
                    echo "Stage 1 - Global Variable: ${env.GLOBAL_VAR}"
                    env.LOCAL_VAR = 'I am local to Stage 1'
                }
            }
        }
        stage('Stage 2') {
            steps {
                script {
                    echo "Stage 2 - Global Variable: ${env.GLOBAL_VAR}"
                    echo "Stage 2 - Local Variable: ${env.LOCAL_VAR}" // Esto fallará porque LOCAL_VAR no está definida en este contexto
                }
            }
        }
    }
}

En este ejemplo, GLOBAL_VAR está disponible en ambas etapas, mientras que LOCAL_VAR solo está disponible en la etapa Stage 1.

Ejercicio Práctico

Ejercicio

  1. Crea una pipeline en Jenkins que defina una variable de entorno personalizada.
  2. Utiliza esta variable en una etapa para imprimir su valor.
  3. Almacena una credencial en Jenkins y úsala en la pipeline para autenticarte en una API ficticia.

Solución

pipeline {
    agent any
    environment {
        CUSTOM_MESSAGE = 'Hello from Jenkins!'
        API_TOKEN = credentials('my-api-token')
    }
    stages {
        stage('Print Custom Message') {
            steps {
                script {
                    echo "Custom Message: ${env.CUSTOM_MESSAGE}"
                }
            }
        }
        stage('Use API Token') {
            steps {
                script {
                    echo "Using API Token: ${env.API_TOKEN}"
                    // Aquí podrías usar el token para autenticarte en una API
                }
            }
        }
    }
}

Conclusión

En esta sección, hemos aprendido cómo utilizar variables de entorno en Jenkins para hacer nuestras pipelines más flexibles y reutilizables. Hemos visto cómo utilizar variables predefinidas, definir variables personalizadas, manejar credenciales de manera segura y entender el contexto de las variables. Con estos conocimientos, puedes hacer que tus pipelines sean más dinámicas y adaptables a diferentes entornos y configuraciones.

En la siguiente sección, exploraremos las mejores prácticas para el uso de pipelines en Jenkins, asegurando que nuestras configuraciones sean eficientes y mantenibles.

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