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
- Variables de Entorno Predefinidas: Jenkins proporciona una serie de variables de entorno predefinidas que se pueden utilizar en cualquier pipeline.
- Definición de Variables de Entorno: Cómo definir y utilizar variables de entorno personalizadas en una pipeline.
- Uso de Credenciales: Cómo manejar credenciales de manera segura utilizando variables de entorno.
- 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
-
Almacenar Credenciales: Primero, almacena las credenciales en Jenkins (por ejemplo, un token de API).
-
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
- Crea una pipeline en Jenkins que defina una variable de entorno personalizada.
- Utiliza esta variable en una etapa para imprimir su valor.
- 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
- 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