Дженкінс не використовує локалі системи


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повинен експортувати локалі системи:

# завантажують середовища,
якщо [-r / etc / default / locale]; то
. / etc / default / locale
export LANG LANGUAGE
elif [-r / etc / environment]; то
. / тощо /
експорт середовища МОВА МОВА
fi


Звичайно, я перезавантажився після зміни локалів;)

Apache також використовує локальні
системи системи Моя система - це установка Ubuntu 14.04.
Невже я пропустив перевірити щось інше?

Дякую за прочитання!
Сподіваюся, хтось може допомогти :)


Здається, Дженкінс скидає всі змінні середовища в оболонках збірки. Перевірте налаштування проекту. Також існує плагін env-inject .
jofel

Ваше рішення має бути відповіддю, а не редагуванням на ваше запитання ...
jasonwryan

Відповіді:


10

Рішення:

Це відбувається тому, що майстер Дженкінса підключається до рабовласницької машини через 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 З повагою, хто

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.