Estoy ejecutando Jenkins desde el usuario jenkinsque se ha $PATHconfigurado 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
shshell y no albashshell (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/profilearchivo 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/addSi 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/profilecomo primer comando en ese área de texto de Build> Execute Shell> Command./usr/local/binse especifica en/etc/paths, y/etc/pathses utilizada por/usr/libexec/path_helper, y path_helper se ejecuta en/etc/profile.También puede editar el
/etc/sysconfig/jenkinsarchivo para realizar cambios en las variables de entorno, etc. Simplemente lo agreguésource /etc/profileal final del archivo./etc/profiletiene todas lasPATHvariables 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_PATHerrores que solíamos tener con el cliente Oracle y Jenkins.fuente
Probé
/etc/profile,~/.profiley~/.bash_profileninguno de los que trabajé. Encontré que la edición~/.bashrcpara la cuenta esclava de Jenkins sí.fuente
/etc/profileni~/.profileLa 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=testseríaMYVARla clave ytestes 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
PATHvariable como sugirió @sagar en su segunda opción, pero aún así obtuve unPATHvalor diferente al que esperaba.¡Finalmente descubrí que era el
EnvInjectcomplemento el que reemplazaba miPATHvariable!Así que podría desinstalarlo
EnvInjecto 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.propertiesbajo 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 environmentopción, y en elProperties File Pathcampo 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.propertiesarchivo.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 ~/.bashrcExplicación
Primero verifiqué que Jenkins estaba ejecutando BASH, con
echo $SHELLyecho $BASH(tenga en cuenta que estoy colocando explícitamente#!/bin/bashencima del área de texto en Jenkins, no estoy seguro de si ese es un requisito para obtener BASH).sourceing/etc/profilecomo otros sugirieron no estaba funcionando.Mirando
/etc/profileencontrée inspeccionando "$ PS1" lo encontró nulo. Traté de falsificar
$PS1en vano como talsin embargo, esto no produjo el resultado deseado (agregue el resto de lo
$PATHque espero ver). Pero si le digo a bash que sea interactivoel
$PATHfue alterado como esperaba.Estaba tratando de descubrir cómo falsificar correctamente un shell interactivo
/etc/bash.bashrcpara cargarlo, sin embargo, resultó que todo lo que necesitaba estaba abajo~/.bashrc, así que simplementesourceresolvió el problema.fuente
#!/bin/bash -elpara 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/jenkinsfuentes/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
.bashrcde su directorio de inicio -/var/lib/jenkins. Tuve que crear/var/lib/jenkins/.bashrcya 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