Estoy ejecutando Jenkins desde el usuario jenkins
que se ha $PATH
configurado en algo y cuando entro en la interfaz web de Jenkins, en la ventana Propiedades del sistema ( http://$host/systemInfo
) veo un archivo $PATH
.
He instalado Jenkins en Centos con el rpm nativo del sitio web de Jenkins. Estoy usando el script de inicio provisto con la instalación usandosudo /etc/init.d/jenkins start
¿Alguien puede explicarme por qué sucede eso?
jenkins
environment-variables
hudson
Miguel
fuente
fuente
echo $PATH
¿coincide con lo que ve en jenkins?Respuestas:
Miguel,
Dos cosas:
Cuando Jenkins se conecta a una computadora, va al
sh
shell y no albash
shell (al menos esto es lo que he notado, puede que me equivoque). Por lo tanto, no se consideran los cambios que realice en $ PATH en su archivo bashrc.Además, cualquier cambio que realice en $ PATH en su shell local (uno en el que usted personalmente ssh) no aparecerá en Jenkins.
Para cambiar la ruta que usa Jenkins, tiene dos opciones (AFAIK):
1) Edite su
/etc/profile
archivo 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, la información de su sistema aún no la mostrará, pero sus compilaciones verán las rutas agregadas.
fuente
Seguí encontrándome con este problema, pero ahora solo agrego:
Como primer paso en mi proceso de construcción. Ahora todas mis reglas posteriores están cargadas para que Jenkins funcione sin problemas.
fuente
source /etc/profile
como primer comando en ese área de texto de Build> Execute Shell> Command./usr/local/bin
se especifica en/etc/paths
, y/etc/paths
es utilizada por/usr/libexec/path_helper
, y path_helper se ejecuta en/etc/profile
.También puede editar el
/etc/sysconfig/jenkins
archivo para realizar cambios en las variables de entorno, etc. Simplemente lo agreguésource /etc/profile
al final del archivo./etc/profile
tiene todas lasPATH
variables adecuadas . Cuando haga esto, asegúrese de reiniciar JenkinsEstamos ejecutando ZendServer CE que instala pear, phing, etc. en una ruta diferente, así que esto fue útil. Además, no obtenemos los
LD_LIBRARY_PATH
errores que solíamos tener con el cliente Oracle y Jenkins.fuente
Probé
/etc/profile
,~/.profile
y~/.bash_profile
ninguno de los que trabajé. Encontré que la edición~/.bashrc
para la cuenta esclava de Jenkins sí.fuente
/etc/profile
ni~/.profile
La información de 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íaMYVAR
la clave ytest
es el valor.fuente
En mi instancia EC2 más reciente, simplemente agregar el nuevo valor a la RUTA .profile del usuario de Jenkins y luego reiniciar Tomcat funcionó para mí.
En una instancia anterior donde la configuración es diferente, usar el n. ° 2 de la respuesta de Sagar fue lo único que funcionó (es decir, .profile, .bash * no funcionó).
fuente
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.
Complemento 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 propiedades estándar de Java.
Complemento EnvInject : este complemento permite agregar variables de entorno y ejecutar un script de configuración para configurar un entorno para el trabajo.
fuente
¿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 propiedad y su valor a lo que necesita.
fuente
Así es como resolví este molesto problema:
Cambié la
PATH
variable como sugirió @sagar en su segunda opción, pero aún así obtuve unPATH
valor diferente al que esperaba.¡Finalmente descubrí que era el
EnvInject
complemento el que reemplazaba miPATH
variable!Así que podría desinstalarlo
EnvInject
o simplemente usarlo para inyectar la variable PATH.Como muchos de nuestros trabajos de Jenkins usan ese complemento, no quería desinstalarlo ...
Así que creé un archivo:
environment_variables.properties
bajo mi directorio de inicio de Jenkins.Este archivo contiene el valor de entorno de ruta que necesitaba:
PATH=$PATH:/usr/local/git/bin/
.Desde la interfaz web Jenkins:
Manage Jenkins -> Configure System
. En esa pantalla - I marcado laPrepare jobs environment
opción, y en elProperties File Path
campo entré en el camino a mi archivo:/var/lib/jenkins/environment_variables.properties
.De esta manera, cada trabajo de Jenkins que tenemos recibe las variables que pongo en este
environment_variables.properties
archivo.fuente
Jenkins también admite el formato
PATH+<name>
para anteponer a cualquier variable, no solo a PATH:Variables de entorno global o variables de entorno de nodo:
Esto también se admite en el paso de canalización
withEnv
:Solo toma nota, se antepone a la variable. Si debe agregarse, debe hacer lo que muestran las otras respuestas.
Consulte el documento de pasos de la canalización aquí .
O los documentos de Java en EnvVars aquí .
fuente
Solo tuve progreso en este problema después de "/etc/init.d/jenkins force-reload". Recomiendo probar eso antes que nada, y usarlo en lugar de reiniciar.
fuente
En mi Ubuntu 13.04, probé bastantes ajustes antes de tener éxito con esto:
fuente
Añadir
a
Jenkins usa sh para que ni siquiera / etc / profile funcione para mí. Cuando agrego esto, tengo todos los archivos env.
fuente
Solución que funcionó para mí
source ~/.bashrc
Explicación
Primero verifiqué que Jenkins estaba ejecutando BASH, con
echo $SHELL
yecho $BASH
(tenga en cuenta que estoy colocando explícitamente#!/bin/bash
encima del área de texto en Jenkins, no estoy seguro de si ese es un requisito para obtener BASH).source
ing/etc/profile
como otros sugirieron no estaba funcionando.Mirando
/etc/profile
encontrée inspeccionando "$ PS1" lo encontró nulo. Traté de falsificar
$PS1
en vano como talsin embargo, esto no produjo el resultado deseado (agregue el resto de lo
$PATH
que espero ver). Pero si le digo a bash que sea interactivoel
$PATH
fue alterado como esperaba.Estaba tratando de descubrir cómo falsificar correctamente un shell interactivo
/etc/bash.bashrc
para cargarlo, sin embargo, resultó que todo lo que necesitaba estaba abajo~/.bashrc
, así que simplementesource
resolvió el problema.fuente
#!/bin/bash -el
para decirle a bash que se inicie como un shell de inicio de sesión. Eso debería hacer que bash obtenga los archivos .rc necesariosProbé todas las cosas de arriba, no funcionó para mí.
Encontré dos soluciones (ambas para SSH-Slave)
Ir a la configuración de esclavos
Agregar una nueva variable de entorno
La parte "$ {HOME}" es importante. Esto hace que el PATH adicional sea absoluto. El camino relativo no funcionó para mí.
Opción II (pipeline-script)
fuente
En Ubuntu, simplemente edito / etc / default / jenkins y agrego la fuente / etc / profile al final y me funciona.
fuente
La ejecución del comando con el conjunto de variables de entorno también es eficaz. Por supuesto, debe hacerlo para cada comando que ejecute, pero probablemente tenga un script de trabajo, por lo que probablemente solo tenga un comando por compilación. Mi secuencia de comandos de trabajo es una secuencia de comandos de Python que usa el entorno para decidir qué Python usar, por lo que aún necesitaba poner /usr/local/bin/python2.7 en su ruta:
fuente
Lo que funcionó para mí fue anular el entorno PATH para el esclavo.
Luego desconectando y volviendo a conectar el esclavo.
A pesar de lo que mostraba la información del sistema, funcionó.
fuente
Tengo Jenkins 1.639 instalado en SLES 11 SP3 a través de zypper (el administrador de paquetes). La instalación configuró jenkins como servicio
Aunque las
/etc/init.d/jenkins
fuentes/etc/sysconfig/jenkins
, las variables env establecidas allí no son heredadas por el proceso de jenkins porque se inicia en un shell de inicio de sesión separado con un nuevo entorno como este:La forma en que logré configurar env vars para el proceso jenkins es a través
.bashrc
de su directorio de inicio -/var/lib/jenkins
. Tuve que crear/var/lib/jenkins/.bashrc
ya que no existía antes.fuente
Esto es lo que hice en ubuntu 18.04 LTS con Jenkins 2.176.2
Creé el archivo .bash_aliases y agregué allí la ruta, las variables de proxy, etc.
Al comienzo de .bashrc estaba esto definido.
Por lo tanto, está comprobando que si iniciamos un shell no interactivo, no hagamos nada aquí.
parte inferior del .bashrc se incluyó para .bash_aliases
así que moví .bash_aliases cargando primero en .bashrc justo encima de la verificación no interactiva.
Esto no funcionó primero, pero luego desconecté el esclavo y lo volví a conectar para que vuelva a cargar las variables. No es necesario reiniciar jenkins completo si está modificando variables esclavas. simplemente desconecte y vuelva a conectar.
fuente
1- agregue a su archivo de perfil el archivo ".bash_profile"
está en la carpeta "/ home / your_user /"
vi .bash_profile
añadir:
==> es el espacio de trabajo de e jenkins
2- Si usa embarcadero: vaya al archivo jenkins.xml
y añadir :
fuente