Jenkins não usa localidades do sistema

7

Eu tenho um comportamento interessante em Jenkins.
O shell do Jenkins não usa meus sistemas locais.

O Jenkins é executado como usuário jenkins no meu sistema.

Conectado como jenkins via SSH:

locale exibido:

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

env mostra LANG e LANGUAGE variables:

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

id mostra o ID do usuário:

uid=1008(jenkins) gid=...

Inseridos acima dos comandos em um shell de trabalho do jenkins:

locale exibido:

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

env não mostra LANG e LANGUAGE variáveis

id mostra o ID do usuário (como esperado):

uid=1008(jenkins) gid=...

os arquivos:

/etc/profile contém:

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

/etc/default/locale contém:

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

script de inicialização /etc/init.d/jenkins deve exportar as localidades do sistema:

# load environments
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
elif [ -r /etc/environment ]; then
. /etc/environment
export LANG LANGUAGE
fi


Claro que reiniciei depois de modificar as localidades;)

Apache também usa as localidades do sistema
Meu sistema é uma instalação do Ubuntu 14.04.
Perdi a oportunidade de verificar outra coisa?

Obrigado pela leitura!
Espero que alguém possa ajudar :)

    
por whosit 29.10.2014 / 10:51

1 resposta

7

Solução:

Isso acontece porque o mestre Jenkins se conecta à máquina escrava via non-interactive shell, então /etc/profile não é executado, e também /etc/default/locale não tem nenhum efeito.
non-interactive shells geralmente usam% código%.

Quase todos os detalhes sobre este tópico podem ser encontrados em askubuntu: link

adicionando a ~/.bashrc :

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


fez isso por mim.

Esse "problema dos escravos" também é discutido aqui:
link link Atenciosamente, whosit

    
por 31.10.2014 / 08:37