Jenkins не использует локали системы

10

Я получил интересное поведение в Дженкинс.
Оболочка Дженкинса не использует мои системные локали.

Дженкинс работает как пользователь jenkinsв моей системе.

Вы вошли как jenkinsчерез SSH:

locale отображается:

LANG = en_US.UTF-8
LANGUAGE = en_US: en
LC_CTYPE = "en_US.UTF-8" и
т. Д ...

envпоказывает LANGи LANGUAGEпеременные:

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

id показывает идентификатор пользователя:

UID = 1008 (Дженкинс) GID = ...

Введенные выше команды для оболочки работы jenkins:

locale отображается:

LANG =
LANGUAGE =
LC_CTYPE = "POSIX" и
т. Д ...

envничего не показывает LANGи LANGUAGEпеременные

id показывает идентификатор пользователя (как и ожидалось):

UID = 1008 (Дженкинс) GID = ...

файлы:

/etc/profile содержит:

экспорт LANG = en_US.UTF-8
экспорт LANGUAGE = en_US: en

/etc/default/locale содержит:

экспорт LANG = en_US.UTF-8
экспорт LANGUAGE = en_US: en

Скрипт запуска /etc/init.d/jenkinsдолжен экспортировать локали системы:

# загрузка окружения
if [-r / etc / default / locale]; тогда
. / etc / default / locale
export LANG LANGUAGE
elif [-r / etc / environment]; тогда
. / etc / environment
export LANG ЯЗЫК
fi


Конечно, я перезагружался после изменения локалей;)

Apache также использует локали
системы. Моя система - установка Ubuntu 14.04.
Я пропустил, чтобы проверить что-то еще?

Спасибо за чтение!
Я надеюсь, что кто-нибудь может помочь :)

whosit
источник
Кажется, Дженкинс сбрасывает все переменные среды в оболочках сборки. Проверьте настройки проекта. Существует также плагин env-inject .
Джофель
Ваше решение должно быть ответом, а не редактированием вашего вопроса ...
jasonwryan

Ответы:

10

Решение:

Это происходит потому, что мастер Jenkins подключается к подчиненному компьютеру через non-interactiveоболочку, поэтому /etc/profileне выполняется, а также /etc/default/localeне оказывает никакого влияния.
non-interactiveснаряды обычно используют ~/.bashrc.

Почти все подробности по этой теме можно найти в askubuntu:
/ubuntu/247738/why-is-etc-profile-not-invoked-for-non-login-shells

добавив в ~/.bashrc:

экспорт LANG = en_US.UTF-8
экспорт LANGUAGE = en_US: en


сделал это для меня.

Эта «ведомая проблема» также обсуждается здесь:
https://groups.google.com/forum/#!topic/jenkinsci-users/hscDs4pKIoU https://groups.google.com/forum/#!topic/jenkinsci-users / g0fNnDltqeM С наилучшими пожеланиями, whosit

whosit
источник