Jenkins n'utilise pas les paramètres régionaux du système

10

J'ai eu un comportement intéressant à Jenkins.
Le shell de Jenkins n'utilise pas mes paramètres régionaux de système.

Jenkins fonctionne en tant qu'utilisateur jenkinssur mon système.

Connecté en tant que jenkinsvia SSH:

locale affiché:

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

envspectacles LANGet LANGUAGEvariables:

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

id affiche l'ID de l'utilisateur:

uid = 1008 (jenkins) gid = ...

Entré les commandes ci-dessus dans un shell de travail jenkins:

locale affiché:

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

envne s'affiche pasLANG et les LANGUAGEvariables

id affiche l'ID de l'utilisateur (comme prévu):

uid = 1008 (jenkins) gid = ...

les fichiers:

/etc/profile contient:

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

/etc/default/locale contient:

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

le script de démarrage /etc/init.d/jenkinsdevrait exporter les paramètres régionaux du système:

# charger les environnements
si [-r / etc / default / locale]; alors
. / etc / default / locale
export LANG LANGUAGE
elif [-r / etc / environment]; alors
. / etc / environnement
export LANG LANGUAGE
fi


Bien sûr, j'ai redémarré après avoir modifié les paramètres régionaux;)

Apache utilise également les paramètres régionaux du
système Mon système est une installation d'Ubuntu 14.04.
Ai-je manqué de vérifier autre chose?

Merci pour la lecture!
J'espère que quelqu'un pourra vous aider :)

qui est-il
la source
Jenkins semble réinitialiser toutes les variables d'environnement dans les shells de build. Vérifiez les paramètres du projet. Il existe également un plugin env-inject .
jofel
Votre solution devrait être une réponse, pas une modification de votre question ...
jasonwryan

Réponses:

10

Solution:

Cela se produit car le maître Jenkins se connecte à la machine esclave via le non-interactiveshell, il /etc/profilen'est donc pas exécuté et /etc/default/localen'a également aucun effet.
non-interactiveles coquilles utilisent généralement ~/.bashrc.

Presque tous les détails sur ce sujet peuvent être trouvés sur askubuntu:
/ubuntu/247738/why-is-etc-profile-not-invoked-for-non-login-shells

ajoutant à ~/.bashrc:

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


l'a fait pour moi.

Ce «problème d'esclave» est également abordé ici:
https://groups.google.com/forum/#!topic/jenkinsci-users/hscDs4pKIoU https://groups.google.com/forum/#!topic/jenkinsci-users / g0fNnDltqeM Cordialement, whosit

qui est-il
la source