GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Variables de entorno de Jenkins:guía definitiva

Introducción

Jenkins es una solución de código abierto que se utiliza para automatizar diferentes partes del ciclo de vida del desarrollo de software (SDLC). Las variables de entorno proporcionan una herramienta valiosa para esto, lo que permite a los desarrolladores invocar un valor varias veces sin necesidad de definirlo antes de cada uso.

En este tutorial, cubriremos diferentes formas de enumerar y configurar las variables de entorno de Jenkins.

Requisitos previos

  • Una copia de Jenkins instalada y lista para usar (aprende cómo instalar Jenkins en Ubuntu 18.04, Debian 10, CentOS 8 o Windows 10).
  • Acceso a un navegador web.

¿Qué son las variables de entorno en Jenkins?

Las variables de entorno son pares clave-valor globales a los que Jenkins puede acceder e inyectar en un proyecto. Utilice las variables de entorno de Jenkins para evitar tener que codificar los mismos valores para cada proyecto.

Otros beneficios de usar las variables de entorno de Jenkins incluyen seguridad mejorada. Jenkins puede usar las credenciales de seguridad como variables, manteniendo los datos confidenciales o generados por el usuario fuera del código del proyecto.

Los tipos de variables de uso común en Jenkins incluyen env (variables de entorno), currentBuild , params (parámetros) y docker (acceso a las funciones de Docker). Jenkins guarda todas las variables de entorno actuales en forma de lista.

Cómo ver las variables de entorno en Jenkins

Hay dos formas de enumerar todas las variables de entorno de Jenkins:

  • Acceder a la lista a través de un navegador web.
  • Utilizar los comandos de shell de Jenkins para imprimirlo.

A través de env-vars.html

Para ver una lista de las variables ambientales de Jenkins en un navegador web, vaya a la siguiente dirección:

[Jenkins URL]/env-vars.html

La URL de Jenkins es una combinación del nombre de host de su sistema y el puerto utilizado por Jenkins. Por ejemplo, al iniciar sesión en su sistema utilizando el puerto predeterminado 8080:

http://localhost:8080/env-vars.html

A través del comando de shell set/printenv

Otro método es crear un trabajo de Jenkins que ejecute un comando de shell para ver las variables de entorno. La salida de la consola de este trabajo es una versión modificada de la lista de variables de entorno.

1. En el lado izquierdo del tablero de Jenkins, haga clic en Nuevo elemento .

2. Introduzca el nombre Variable de entorno s en el campo correspondiente y seleccione Pipeline como tipo de elemento.

3. Haga clic en Aceptar para confirmar.

4. Desplácese hacia abajo hasta Pipeline. sección y agregue el siguiente código:

pipeline{
    agent any
    
    stages{
        stage("Env Variables"){
            steps{
                bat "set"                                                     
            }
        }
    }
}

4. Haga clic en Guardar para confirmar los cambios en la canalización.

5. Haga clic en Crear ahora enlace en el lado izquierdo para crear una nueva compilación de canalización.

6. En Historial de compilación , haga clic en el número de compilación para acceder a las opciones de compilación.

7. Haga clic en Salida de consola en el lado izquierdo.

La salida de la consola página muestra la salida del comando de shell. En este caso, es una lista de variables de entorno de Jenkins:

Cómo leer variables de entorno en Jenkins Pipeline

Hay dos formas de leer y acceder a las variables de entorno de Jenkins:

  • Uso del env objeto con el nombre de la variable.
  • Usando el nombre corto de la variable.

Como ejemplo, estamos usando el BUILD_NUMBER variable, que contiene el número de compilación de canalización actual. Este código demuestra ambos métodos de lectura de la variable:

pipeline {
    agent any

    stages {
        stage("Env Variables") {
            steps {
                echo "The current build number is ${env.BUILD_NUMBER}"
                echo "Another method is to use \${BUILD_NUMBER}, which is ${BUILD_NUMBER}"
            }
        }
    }
}

En el ejemplo anterior, Jenkins está leyendo la variable con:

  • ${env.BUILD_NUMBER} :Uso de env objeto.
  • ${BUILD_NUMBER} :Usando el nombre corto de la variable.

El resultado muestra el número de compilación actual como resultado:

Cómo establecer una variable de entorno en una canalización de Jenkins

Los usuarios pueden configurar las variables de entorno de Jenkins a nivel global o local. Agregue variables de entorno global a través del panel de control de Jenkins, mientras que las variables locales se agregan mediante canalizaciones declarativas, imperativas y con secuencias de comandos.

Variables de entorno global de Jenkins

En Jenkins, cualquier tubería o trabajo puede acceder y leer variables de entorno globales. Para agregar una nueva variable de entorno global usando el tablero de Jenkins:

1. En el lado izquierdo del panel de control de Jenkins, haga clic en Administrar Jenkins. .

2. En Configuración del sistema sección, haga clic en Configurar sistema .

3. Desplácese hacia abajo hasta llegar a las Propiedades globales sección. Marque la casilla junto a Variables de entorno y haz clic en Agregar botón para agregar una nueva variable.

4. Introduzca el nombre y el valor de la nueva variable en los campos correspondientes.

5. Haga clic en Guardar botón para guardar las nuevas variables.

Variables de entorno local de Jenkins

Puede establecer una variable de entorno local en Jenkins mediante la canalización declarativa. Este método utiliza el environment {} sintaxis de bloque:

environment {
    [variable name] = "[variable value]"
}

Colocar este bloque al comienzo de la canalización significa que la variable está disponible para su uso en cualquier paso de la canalización. Colocarlo en una etapa en particular significa que solo está disponible durante los pasos de esa etapa y solo esa etapa.

Otro método es usar un env objeto en un script para definir imperativamente una variable de entorno:

script {
    env. [variable name] = "[variable value]"
}

Finalmente, usando un withEnv([]) {} bloque establece una variable de entorno local como parte de una canalización con secuencias de comandos:

withEnv(["[variable name]= [variable value]"])

Como ejemplo, este código usa los tres métodos descritos anteriormente en una sola canalización para establecer variables de entorno locales:

pipeline {
    agent any

    environment {
        DATE = "December 17th"
    }

    stages {
        stage("Env Variables") {
            environment {
                NAME = "Alex"
            }

            steps {
                echo "Today is ${env.DATE}"
                echo "My name ${env.NAME}"

                script {
                    env.WEBSITE = "phoenixNAP KB"
                }

                echo "This is an example for ${env.WEBSITE}"

                withEnv(["TEST_VARIABLE=TEST_VALUE"]) {
                    echo "The value of TEST_VARIABLE is ${env.TEST_VARIABLE}"
                }
            }
        }
    }
}

En este ejemplo, estamos configurando el DATE y NAME variables de entorno declarativamente. DATE está en la parte superior de la canalización y se puede usar en todas las etapas, mientras que NAME está en "Env Variables" etapa, por lo que solo podemos usarlo dentro de esa etapa. El WEBSITE variable se establece de forma imperativa, y TEST_VARIABLE es parte de una canalización con secuencias de comandos.

La salida de la consola para esta canalización muestra que Jenkins puede acceder y leer con éxito cada variable:

Inyectar variables de entorno

Agregar el complemento EnvInject a Jenkins le permite inyectar variables de entorno durante el inicio de la compilación. Esto es particularmente útil cuando se crea un proyecto de estilo libre en Jenkins.

Siga los pasos que se describen a continuación para agregar el complemento EnvInject a Jenkins e inyectar variables:

1. Haga clic en Administrar Jenkins en el lado izquierdo del salpicadero.

2. En la Configuración del sistema sección, haga clic en Administrar complementos botón.

3. En Disponible pestaña, busque envinject . Marque la casilla de verificación junto al Environment Injector complemento y haga clic en Instalar sin reiniciar .

4. Una vez que el complemento termine de instalarse, regrese al tablero. Haga clic en Nuevo elemento enlace para crear un nuevo proyecto, agregue un nombre y seleccione el proyecto Freestyle tipo.

5. Haga clic en Aceptar para crear un nuevo proyecto.

6. Desplácese hacia abajo hasta Construir. y haga clic en Agregar pasos de compilación para abrir un menú desplegable con las opciones disponibles. Seleccione Inyectar variables de entorno .

7. Si desea agregar variables de entorno desde un archivo de propiedades, agregue la ruta al archivo en Ruta del archivo de propiedades campo. Otra opción es agregar las nuevas variables directamente al Contenido de propiedades campo, utilizando el [variable name] = [variable value] sintaxis.

8. Haga clic en Guardar botón para confirmar la adición de la nueva variable de entorno.

Cómo anular la variable de entorno en Jenkins

La canalización de Jenkins permite a los usuarios anular las variables de entorno, cambiando el valor actual de la variable por uno nuevo.

El proceso de anulación sigue varias reglas al determinar la prioridad de las variables:

  • El withEnv([]) { } bloque anula cualquier variable de entorno.
  • Variables configuradas usando env el objeto no puede anular los establecidos usando el environment {} bloque.
  • Variables configuradas usando env El objeto solo puede anular otras variables establecidas con env objeto.

Ubuntu
  1. Configuración de variables de entorno de Shell | Cáscara BASH

  2. ¿Hacer referencia a variables de entorno *en* /etc/environment?

  3. Comprobación de variables de entorno

  4. Establecer un entorno temporal ($PATH)

  5. Cómo desarmar muchas variables de entorno

Cómo establecer variables de entorno en MacOS

Guía definitiva sobre tipos de certificados SSL

Cómo configurar/desconfigurar variables de entorno en Linux

¿Dónde se deben establecer las variables de entorno para Jenkins?

Guía fácil paso a paso de variables de entorno de Linux

Variables de entorno de Linux