variable type supported number build_number jenkins environment-variables

type - ¿Cómo establecer variables de entorno en Jenkins?



jenkins workspace path (10)

La forma más sencilla

Puede usar el complemento EnvInject para inyectar variables de entorno al inicio de la compilación. Por ejemplo:

Cómo sabes que está funcionando

Me gustaría poder hacer algo como:

AOEU=$(echo aoeu)

y Jenkins estableció AOEU=aoeu .

La sección Variables del entorno en Jenkins no hace eso. En cambio, establece AOEU=''$(echo aoeu)'' .

¿Cómo puedo lograr que Jenkins evalúe un comando de shell y asigne el resultado a una variable de entorno?

Eventualmente, quiero poder asignar el ejecutor de un trabajo a una variable de entorno que puede ser transferida o utilizada por otros scripts.


En mi caso, necesitaba agregar la variable de entorno JMETER_HOME para estar disponible a través de mis scripts de construcción Ant en todos los proyectos en mi servidor Jenkins (Linux), de una manera que no interfiera con mi entorno de construcción local (Windows y Mac) en el script build.xml Establecer la variable de entorno a través de Gestionar Jenkins - Configurar sistema - Propiedades globales fue la forma más fácil y menos intrusiva de lograr esto. No hay complementos necesarios.

La variable de entorno está entonces disponible en Ant a través de:

<property environment="env" /> <property name="jmeter.home" value="${env.JMETER_HOME}" />

Esto se puede verificar a trabajos agregando:

<echo message="JMeter Home: ${jmeter.home}"/>

Que produce:

JMeter Home: ~ / .jmeter


Esto se puede hacer mediante el complemento EnvInject de la siguiente manera:

  1. Cree un paso de compilación "Ejecutar shell" que se ejecute:

    echo AOEU=$(echo aoeu) > propsfile

  2. Cree un paso de compilación de variables de entorno de propsfile y establezca "Ruta del archivo de propiedades" a propsfile .

Nota : Este plugin (en su mayoría) no es compatible con el plugin Pipeline.


Existe el plugin Build Propagator Plugin que le permite agregar nuevas variables de entorno de compilación, por ej.

Cualquier paso sucesivo Propagar variables de entorno de compilación anulará los valores de variables de entorno previamente definidos.


Normalmente puede configurar variables de entorno en propiedades globales en Configurar sistema .

Sin embargo, para variables dinámicas con sustitución de shell, es posible que desee crear un archivo de script en el directorio HOME de Jenkins y ejecutarlo durante la compilación. El acceso SSH es requerido. Por ejemplo.

  1. Inicia sesión como Jenkins: sudo su - jenkins
  2. Cree un script de shell, por ejemplo:

    echo ''export VM_NAME="$JOB_NAME"'' > ~/load_env.sh chmod 750 ~/load_env.sh

  3. En Jenkins Build ( Ejecutar shell ), invoque el script y sus variables antes que nada, p. Ej.

    source ~/load_env.sh


Por alguna razón, sudo su - jenkins no me registra a user jenkins , terminé usando un enfoque diferente.

/var/lib/jenkins/config.xml establecer las variables de env globales mediante el uso de jenkins config.xml en /var/lib/jenkins/config.xml (instalado en Linux / RHEL), sin utilizar complementos externos.

Simplemente tuve que detener jenkins add, luego agregar globalNodeProperties y luego reiniciar.

Ejemplo, estoy definiendo las variables APPLICATION_ENVIRONMENT y SPRING_PROFILES_ACTIVE en SPRING_PROFILES_ACTIVE a continuación,

<?xml version=''1.0'' encoding=''UTF-8''?> <hudson> <globalNodeProperties> <hudson.slaves.EnvironmentVariablesNodeProperty> <envVars serialization="custom"> <unserializable-parents/> <tree-map> <default> <comparator class="hudson.util.CaseInsensitiveComparator"/> </default> <int>2</int> <string>APPLICATION_ENVIRONMENT</string> <string>continious_integration</string> <string>SPRING_PROFILES_ACTIVE</string> <string>continious_integration</string> </tree-map> </envVars> </hudson.slaves.EnvironmentVariablesNodeProperty> </globalNodeProperties> </hudson>


Pruebe el wiki.jenkins-ci.org/display/JENKINS/Environment+Script+Plugin ( GitHub ) que es muy similar a EnvInject . Le permite ejecutar un script antes de la compilación (después del pago de SCM) que genera variables de entorno para él. P.ej

y en su secuencia de comandos, puede imprimir, por ejemplo, FOO=bar a la salida estándar para establecer esa variable.

Ejemplo para anexar a una PATH estilo PATH existente:

echo PATH+unique_identifier=/usr/local/bin

Por lo tanto, puede hacer lo que necesite en el script, ya sea un archivo, o ejecutar un script en otro idioma desde el árbol fuente de su proyecto, etc.


Puede usar el complemento del inyector de entorno para establecer las variables de entorno en Jenkins en los niveles de trabajo y nodo. A continuación, le mostraré cómo hacerlo en el nivel de trabajo.

  1. Desde la interfaz web de Jenkins, vaya a Manage Jenkins > Manage Plugins e instalar el complemento.

  1. Vaya a su trabajo Pantalla de Configure
  2. Busque Add build step de Build en la sección Build y seleccione Inject environment variables
  3. Establezca la variable de entorno deseada como VARIABLE_NAME = patrón VALUE. En mi caso, cambié el valor de la variable USERPROFILE

Si necesita definir una nueva variable de entorno dependiendo de algunas condiciones (por ejemplo, parámetros de trabajo), puede consultar esta answer .


Puedes probar algo como esto

stages { stage(''Build'') { environment { AOEU= sh (returnStdout: true, script: ''echo aoeu'').trim() } steps { sh ''env'' sh ''echo $AOEU'' } } }


EnvInject Plugin aka ( Plugin de inyector de entorno ) le ofrece varias opciones para configurar variables de entorno desde la configuración de Jenkins.

Al seleccionar Inject environment variables to the build process obtendrás:

  • Properties File Path
  • Properties Content
  • Script File Path

  • Script Content

  • y finalmente Evaluated Groovy script .

Evaluated Groovy script le da la posibilidad de establecer una variable de entorno en función del resultado del comando ejecutado :

  • con el método de execute :

return [HOSTNAME_SHELL: ''hostname''.execute().text, DATE_SHELL: ''date''.execute().text, ECHO_SHELL: ''echo hello world!''.execute().text ]

  • o con el código explícito de Groovy :

return [HOSTNAME_GROOVY: java.net.InetAddress.getLocalHost().getHostName(), DATE_GROOVY: new Date() ]

(Más detalles sobre cada método se pueden encontrar en la ayuda incorporada (?))

Lamentablemente, no puede hacer lo mismo desde el Script Content del Script Content ya que dice:

Ejecute un archivo de script destinado a establecer un entorno como crear carpetas, copiar archivos, etc. Proporcione el contenido del archivo de script. Puede usar las variables de propiedades anteriores. Sin embargo, agregar o reemplazar variables de entorno en el script no tiene ningún impacto en el trabajo de compilación .