Jenkins sistemin yerel ayarlarını kullanmaz


10

Jenkins'te ilginç bir davranış aldım.
Jenkins'in kabuğu benim sistem yerel ayarlarımı kullanmıyor.

Jenkins jenkinssistemimde kullanıcı olarak çalışıyor .

Olarak giriş jenkinsSSH ile:

locale görüntülenen:

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

envgösterir LANGve LANGUAGEdeğişkenler:

LANG = tr_TR.UTF-8
LANGUAGE = tr_TR: tr

id kullanıcının kimliğini gösterir:

uid = 1008 (jenkins) gid = ...

Yukarıda bir jenkins iş kabuğuna komutlar girildi:

locale görüntülenen:

LANG =
DİL =
LC_CTYPE = "POSIX"
vb ...

envyok değil göstermek LANGve LANGUAGEdeğişkenler

id kullanıcının kimliğini gösterir (beklendiği gibi):

uid = 1008 (jenkins) gid = ...

dosyalar:

/etc/profile içerir:

dışa aktarma LANG = en_US.UTF-8
dışa aktarma LANGUAGE = en_US: en

/etc/default/locale içerir:

dışa aktarma LANG = en_US.UTF-8
dışa aktarma LANGUAGE = en_US: en

başlangıç ​​komut dosyası /etc/init.d/jenkins, sistemin yerel ayarlarını dışa aktarmalıdır:

# ortamlar
[-r / etc / default / locale] ise; sonra
. / etc / default / localale
export LANG LANGUAGE
elif [-r / etc / environment]; sonra
. / etc / çevre
ihracatı LANG LANGUAGE
fi


Tabii ki yerel ayarları değiştirdikten sonra yeniden başlattım;)

Apache sistemin yerel ayarlarını da kullanıyor
Sistemim bir Ubuntu 14.04 kurulumudur.
Başka bir şeyi kontrol etmeyi özledim mi?

Okuduğunuz için teşekkürler!
Umarım biri yardımcı olabilir :)


Jenkins yapı kabuklarındaki tüm ortam değişkenlerini sıfırlıyor gibi görünüyor. Proje ayarlarını kontrol edin. Bir env-inject eklentisi de var .
jofel

Çözümünüz, sorunuzun bir düzenlemesi değil bir cevap olmalıdır ...
jasonwryan

Yanıtlar:


10

Çözüm:

Bunun nedeni, Jenkins master'ın bağımlı makineye non-interactivekabuk yoluyla bağlanması , dolayısıyla /etc/profileyürütülmemesi ve /etc/default/localeherhangi bir etkisi olmamasıdır.
non-interactivekabuklar genellikle kullanıyor ~/.bashrc.

Bu konuyla ilgili neredeyse tüm ayrıntılar askubuntu'da bulunabilir:
/ubuntu/247738/why-is-etc-profile-not-invoked-for-non-login-shells

ekleyerek ~/.bashrc:

dışa aktarma LANG = en_US.UTF-8
dışa aktarma LANGUAGE = en_US: en


benim için yaptım.

Bu 'köle sorunu' da burada tartışılmıştır:
https://groups.google.com/forum/#!topic/jenkinsci-users/hscDs4pKIoU https://groups.google.com/forum/#!topic/jenkinsci-users / g0fNnDltqeM Saygılarımla, whosit

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.