Jenkins não usa as localidades do sistema

10

Eu tenho um comportamento interessante em Jenkins.
O shell do Jenkins não usa os códigos de idioma dos meus sistemas.

Jenkins é executado como usuário jenkinsno meu sistema.

Conectado como jenkinsvia SSH:

locale exibido:

LANG = pt_BR.UTF-8
LANGUAGE = pt_BR: pt
LC_CTYPE = "pt_US.UTF-8"
etc ...

envshows LANGe LANGUAGEvariáveis:

LANG = pt_BR.UTF-8
LANGUAGE = pt_BR: pt

id mostra o ID do usuário:

uid = 1008 (jenkins) gid = ...

Os comandos acima foram inseridos em um job shell de jenkins:

locale exibido:

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

envse não mostrar LANGe LANGUAGEvariáveis

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

uid = 1008 (jenkins) gid = ...

os arquivos:

/etc/profile contém:

exportar LANG = pt_BR.UTF-8
exportar LANGUAGE = pt_BR: pt

/etc/default/locale contém:

exportar LANG = pt_BR.UTF-8
exportar LANGUAGE = pt_BR: pt

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

# carregar ambientes
se [-r / etc / default / locale]; então
. / etc / default / locale de
exportação LANG LANGUAGE
elif [-r / etc / environment]; então
. / etc / environment
export LANG LANGUAGE
fi


É claro que eu reiniciei depois de modificar as localidades;) O

Apache também usa as localidades do
sistema Meu sistema é uma instalação do Ubuntu 14.04.
Eu perdi para verificar outra coisa?

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

quem é
fonte
Jenkins parece redefinir todas as variáveis ​​de ambiente nos shells de construção. Verifique as configurações do projeto. Há também um plug-in env-injetar .
Jofel
Sua solução deve ser uma resposta, não uma edição à sua pergunta ...
jasonwryan

Respostas:

10

Solução:

Isso acontece porque o mestre Jenkins se conecta à máquina escrava via non-interactiveshell, portanto, /etc/profilenão é executado e também /etc/default/localenão tem nenhum efeito.
non-interactiveconchas geralmente estão usando ~/.bashrc.

Quase todos os detalhes sobre este tópico podem ser encontrados no askubuntu:
/ubuntu/247738/why-is-etc-profile-not-invoked-for-non-login-shells

adicionando a ~/.bashrc:

exportar LANG = pt_BR.UTF-8
exportar LANGUAGE = pt_BR: pt


fez isso por mim.

Esse 'problema escravo' também é discutido aqui:
https://groups.google.com/forum/#!topic/jenkinsci-users/hscDs4pKIoU https://groups.google.com/forum/#!topic/jenkinsci-users / g0fNnDltqeM Atenciosamente, whosit

quem é
fonte