vars built jenkins environment-variables hudson

built - Variables de entorno Jenkins/Hudson



jenkins set env vars (19)

Estoy ejecutando Jenkins del usuario jenkins que tiene $PATH configurado para algo y cuando entro en la interfaz web de Jenkins, en la ventana Propiedades del sistema ( http://$host/systemInfo ) veo una $PATH diferente.

He instalado Jenkins en Centos con las rpm nativas del sitio web de Jenkins. Estoy usando el script de inicio provisto con la instalación usando sudo /etc/init.d/jenkins start

¿Alguien puede explicarme por qué sucede eso?


Solución que funcionó para mí

source ~/.bashrc

Explicación

Primero verifiqué que Jenkins estaba ejecutando BASH, con echo $SHELL y echo $BASH (nótese que estoy poniendo explícitamente #!/bin/bash sobre el área de texto en Jenkins, no estoy seguro de si ese es un requisito para obtener BASH). source ing /etc/profile como otros sugirieron que no estaba funcionando.

Mirando /etc/profile encontré

if [ "$PS1" ]; then ...

e inspeccionando "$ PS1" lo encontró nulo. Probé spoofing $PS1 inútilmente como tal

export PS1=1 bash -c ''echo $PATH''

sin embargo, esto no produjo el resultado deseado (agregue el resto del $PATH que espero ver). Pero si cuento bash para ser interactivo

export PS1=1 bash -ci ''echo $PATH''

el $PATH fue alterado como esperaba.

Estaba intentando descubrir cómo falsificar correctamente un intérprete interactivo para que /etc/bash.bashrc cargue, pero resulta que todo lo que necesitaba estaba en ~/.bashrc , por lo que simplemente resolverlo solucionó el problema.


¿No podría simplemente agregarlo como una variable de entorno en la configuración de Jenkins?

Administre Jenkins -> Propiedades globales> Variables de entorno: y luego haga clic en "Agregar" para agregar una RUTA de la propiedad y su valor a lo que necesita.


1- agrega a tu archivo profil el archivo ".bash_profile"

está en la carpeta "/ home / your_user /"

vi .bash_profile

añadir:

export JENKINS_HOME=/apps/data/jenkins export PATH=$PATH:$JENKINS_HOME

==> es el espacio de trabajo de e jenkins

2- Si usa embarcadero: vaya al archivo jenkins.xml

y añadir :

<Arg>/apps/data/jenkins</Arg>


Añadir

/usr/bin/bash

a

Jenkins -> Gestiona Jenkins -> configura System -> Shell-> Shell ejecutable

Jenkins usa el sh para que incluso / etc / profile no me funcione Cuando agrego esto, tengo todo el env.


Así es como resolví este problema molesto:

Cambié la variable PATH como sugirió @sagar en su segunda opción, pero aun así obtuve un valor de PATH diferente del que esperaba.

¡Eventualmente descubrí que era el plugin EnvInject que reemplazó mi variable PATH !

Así que podría desinstalar EnvInject o simplemente usarlo para inyectar la variable PATH.

Como muchos de nuestros trabajos en Jenkins usan ese complemento, no quise desinstalarlo ...

Así que creé un archivo: environment_variables.properties en mi directorio de inicio de Jenkins.

Este archivo contenía el valor del entorno de ruta que necesitaba: PATH=$PATH:/usr/local/git/bin/ .

Desde la interfaz web de Jenkins: Manage Jenkins -> Configure System . En esa pantalla, marqué la opción Prepare jobs environment y, en el campo Properties File Path acceso a los archivos, /var/lib/jenkins/environment_variables.properties la ruta a mi archivo: /var/lib/jenkins/environment_variables.properties .

De esta forma, cada trabajo de Jenkins recibimos las variables que incluyo en este archivo environment_variables.properties .


Ejecutar el comando con la variable de entorno establecida también es efectivo. Por supuesto, debe hacerlo por cada comando que ejecute, pero probablemente tenga un script de trabajo, por lo que probablemente solo tenga un comando por compilación. Mi script de trabajo es una secuencia de comandos python que usa el entorno para decidir qué python usar, por lo que aún necesito poner /usr/local/bin/python2.7 en su ruta:

PATH=/usr/local/bin <my-command>


En Ubuntu solo edito / etc / default / jenkins y agrego source / etc / profile al final y me funciona.


En mi Ubuntu 13.04, intenté algunos ajustes antes de tener éxito con esto:

  1. Editar /etc/init/jenkins.conf
  2. Ubique el lugar donde comienza "start-stop-server ... exec"
  3. Inserte la actualización del entorno justo antes de eso, es decir,

PATH de exportación = $ PATH: / some / new / path / bin


En mi nueva instancia de EC2, simplemente agregar el nuevo valor a la RUTA de .profile del usuario de Jenkins y luego reiniciar tomcat funcionó para mí.

En una instancia anterior donde la configuración es diferente, usar el # 2 de la respuesta de Sagar fue lo único que funcionó (es decir, .profile, .bash * no funcionó).


Encontré dos complementos para eso. Uno carga los valores de un archivo y el otro le permite configurar los valores en la pantalla de configuración del trabajo.

Plugin de Envfile : este complemento le permite establecer variables de entorno a través de un archivo. El formato del archivo debe ser el formato de archivo de propiedad estándar de Java.

Complemento de EnvInject : este complemento permite agregar variables de entorno y ejecutar un script de configuración para configurar un entorno para el trabajo.


Intenté /etc/profile , ~/.profile y ~/.bash_profile y ninguno funcionó. Descubrí que la edición ~/.bashrc para la cuenta esclava Jenkins sí.


La información sobre esta respuesta está desactualizada. Debe ir a Configurar Jenkins> y luego puede hacer clic para agregar un par clave-valor de variable de entorno desde allí.

por ejemplo: export MYVAR=test sería MYVAR es la clave, y la test es el valor.


Lo que funcionó para mí fue anular el entorno PATH para el esclavo.

Set: PATH To: $PATH:/usr/local/bin

Luego desconectando y reconectando el esclavo.

A pesar de lo que la información del sistema estaba mostrando, funcionó.


Miguel,

Dos cosas:

Cuando Jenkins se conecta a una computadora, va a la concha sh , y no a la concha bash (al menos esto es lo que noté, es posible que esté equivocado). Por lo tanto, no se tienen en cuenta los cambios que realice en $ PATH en su archivo bashrc.

Además, cualquier cambio que realice en $ PATH en su shell local (uno al que usted personalmente ingrese) no se mostrará en Jenkins.

Para cambiar el camino que utiliza Jenkins, tiene dos opciones (AFAIK):

1) Edite su /etc/profile y agregue las rutas que desee allí

2) Vaya a la página de configuración de su esclavo, y agregue la variable de entorno PATH , con el valor: $PATH:/followed-by/paths/you/want/to/add

Si usa la segunda opción, su Información del sistema aún no la mostrará, pero sus compilaciones verán las rutas adicionales.


Probé todas las cosas desde arriba, no funcionó para mí.

Encontré dos soluciones (ambas para SSH-Slave)

  1. Ir a la configuración del esclavo

  2. Agregue una nueva variable de entorno

  3. CAMINO
  4. $ {PATH}: $ {HOME} /. Pub-cache / bin: $ {HOME} /. Local / bin

La parte "$ {HOME}" es importante. Esto hace que la RUTA adicional sea absoluta. La ruta relativa no funcionó para mí.

Opción II (secuencia de comandos script)

pipeline { agent { label ''your-slave'' } environment { PATH = "/home/jenkins/.pub-cache/bin:$PATH" } stages { stage(''Test'') { steps { ansiColor(''xterm'') { echo "PATH is: $PATH" } } } } }


Seguí encontrando este problema, pero ahora solo agrego:

source /etc/profile

Como el primer paso en mi proceso de construcción. Ahora todas mis reglas posteriores están cargadas para que Jenkins funcione sin problemas.


Solo tuve progreso en este tema después de un "/etc/init.d/jenkins force-reload". Recomiendo probar eso antes que cualquier otra cosa, y usar eso en lugar de reiniciar.


También puede editar el /etc/sysconfig/jenkins para realizar cambios en las variables de entorno, etc. Simplemente agregué source /etc/profile al final del archivo. /etc/profile tiene todas las configuraciones de PATH correctas. Cuando hagas esto, asegúrate de reiniciar Jenkins

/etc/init.d/jenkins restart

Estamos ejecutando ZendServer CE, que instala pear, phing, etc. en una ruta diferente, así que esto fue útil. Además, no obtenemos los errores LD_LIBRARY_PATH que solíamos obtener con el cliente de Oracle y Jenkins.


Tengo instalado Jenkins 1.639 en SLES 11 SP3 a través de zypper (el administrador de paquetes). La instalación configuró jenkins como un servicio

# service jenkins Usage: /etc/init.d/jenkins {start|stop|status|try-restart|restart|force-reload|reload|probe}

Aunque /etc/init.d/jenkins sources /etc/sysconfig/jenkins , el proceso jenkins no hereda ninguna variable de env establecida aquí porque se inicia en un shell de inicio de sesión separado con un entorno nuevo como este:

startproc -n 0 -s -e -l /var/log/jenkins.rc -p /var/run/jenkins.pid -t 1 /bin/su -l -s /bin/bash -c ''/usr/java/default/bin/java -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --javaHome=/usr/java/default --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --httpPort=8080 --ajp13Port=8009 --debug=9 --handlerCountMax=100 --handlerCountMaxIdle=20 &'' jenkins

La forma en que logré establecer los archivos para el proceso de jenkins es a través de .bashrc en su directorio de inicio - /var/lib/jenkins . Tuve que crear /var/lib/jenkins/.bashrc ya que no existía antes.