Jenkins no usa las configuraciones regionales del sistema


10

Tengo un comportamiento interesante en Jenkins.
El shell de Jenkins no usa las configuraciones regionales de mis sistemas.

Jenkins se ejecuta como usuario jenkinsen mi sistema.

Conectado como a jenkinstravés de SSH:

locale desplegado:

LANG = en_US.UTF-8
LANGUAGE = en_US: en
LC_CTYPE = "en_US.UTF-8",
etc.

envespectáculos LANGy LANGUAGEvariables:

LANG = en_US.UTF-8
LANGUAGE = en_US: en

id muestra la ID del usuario:

uid = 1008 (jenkins) gid = ...

Ingresó los comandos anteriores a un shell de trabajo jenkins:

locale desplegado:

LANG =
LANGUAGE =
LC_CTYPE = "POSIX",
etc.

envno no mostrar LANGy LANGUAGElas variables

id muestra la ID del usuario (como se esperaba):

uid = 1008 (jenkins) gid = ...

Los archivos:

/etc/profile contiene:

export LANG = en_US.UTF-8
export LANGUAGE = en_US: en

/etc/default/locale contiene:

export LANG = en_US.UTF-8
export LANGUAGE = en_US: en

el script de inicio /etc/init.d/jenkinsdebe exportar las configuraciones regionales del sistema:

# entornos de carga
si [-r / etc / default / locale]; entonces
. / etc / default / locale
export LANG LANGUAGE
elif [-r / etc / environment]; entonces
. / etc / environment
export LANG LANGUAGE
fi


Por supuesto, reinicié después de modificar las configuraciones regionales;)

Apache también usa las configuraciones regionales del
sistema Mi sistema es una instalación de Ubuntu 14.04.
¿Me perdí comprobar algo más?

¡Gracias por leer!
Espero que alguien pueda ayudar :)


Jenkins parece restablecer todas las variables de entorno en los shells de compilación. Verifique la configuración del proyecto. También hay un complemento env-inject .
jofel

Su solución debe ser una respuesta, no una edición a su pregunta ...
jasonwryan

Respuestas:


10

Solución:

Esto sucede porque el maestro Jenkins se conecta a la máquina esclava a través del non-interactiveshell, por /etc/profilelo que no se ejecuta y /etc/default/localetampoco tiene ningún efecto.
non-interactivelas conchas generalmente se usan ~/.bashrc.

Casi todos los detalles sobre este tema se pueden encontrar en askubuntu:
/ubuntu/247738/why-is-etc-profile-not-invoked-for-non-login-shells

agregando a ~/.bashrc:

export LANG = en_US.UTF-8
export LANGUAGE = en_US: en


Lo hice por mí.

Este "problema de esclavos" también se trata aquí:
https://groups.google.com/forum/#!topic/jenkinsci-users/hscDs4pKIoU https://groups.google.com/forum/#!topic/jenkinsci-users / g0fNnDltqeM Saludos cordiales, quien

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.