Jenkins nie używa ustawień regionalnych systemu


10

Mam ciekawe zachowanie w Jenkins.
Powłoka Jenkinsa nie używa ustawień regionalnych moich systemów.

Jenkins działa jako użytkownik jenkinsw moim systemie.

Zalogowany jako jenkinsprzez SSH:

locale wystawiany:

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

envpokazuje LANGi LANGUAGEzmienne:

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

id pokazuje identyfikator użytkownika:

uid = 1008 (jenkins) gid = ...

Wprowadzono powyższe polecenia do powłoki zadania Jenkinsa:

locale wystawiany:

LANG =
LANGUAGE =
LC_CTYPE = „POSIX”
itp ...

envczy nie pokazać LANGi LANGUAGEzmienne

id pokazuje identyfikator użytkownika (zgodnie z oczekiwaniami):

uid = 1008 (jenkins) gid = ...

pliki:

/etc/profile zawiera:

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

/etc/default/locale zawiera:

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

skrypt startowy /etc/init.d/jenkinspowinien wyeksportować ustawienia regionalne systemu:

# ładuje środowiska,
jeśli [-r / etc / default / locale]; potem
. / etc / default / locale
export LANG LANGUAGE
elif [-r / etc / environment]; potem
. / etc / environment
export LANG LANGUAGE
fi


Oczywiście zrestartowałem się po modyfikacji ustawień regionalnych;)

Apache używa także ustawień narodowych
systemu. Mój system to instalacja Ubuntu 14.04.
Czy przegapiłem sprawdzić coś jeszcze?

Dziękuję za przeczytanie!
Mam nadzieję, że ktoś może pomóc :)


Wygląda na to, że Jenkins resetuje wszystkie zmienne środowiskowe w powłokach kompilacji. Sprawdź ustawienia projektu. Istnieje również wtyczka env-inject .
jofel

Twoje rozwiązanie powinno być odpowiedzią, a nie edycją twojego pytania ...
jasonwryan

Odpowiedzi:


10

Rozwiązanie:

Dzieje się tak, ponieważ mistrz Jenkins łączy się z maszyną podrzędną za pośrednictwem non-interactivepowłoki, więc /etc/profilenie jest wykonywany, a także /etc/default/localenie ma żadnego efektu.
non-interactivemuszle są zazwyczaj za pomocą ~/.bashrc.

Prawie wszystkie szczegóły na ten temat można znaleźć na askubuntu:
/ubuntu/247738/why-is-etc-profile-not-invoked-for-non-login-shells

dodając do ~/.bashrc:

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


zrobił to dla mnie.

Ten „problem z niewolnikami” jest również omawiany tutaj:
https://groups.google.com/forum/#!topic/jenkinsci-users/hscDs4pKIoU https://groups.google.com/forum/#!topic/jenkinsci-users / g0fNnDltqeM Z poważaniem, whosit

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.