Saya memiliki perilaku yang menarik di Jenkins.
Shell Jenkins tidak menggunakan lokal sistem saya.
Jenkins berjalan sebagai pengguna jenkins
di sistem saya.
Masuk sebagai jenkins
melalui SSH:
locale
ditampilkan:
LANG = en_US.UTF-8
LANGUAGE = en_US: en
LC_CTYPE = "en_US.UTF-8"
dll ...
env
acara LANG
dan LANGUAGE
variabel:
LANG = en_US.UTF-8
LANGUAGE = en_US: en
id
menunjukkan ID pengguna:
uid = 1008 (jenkins) gid = ...
Masukkan perintah di atas ke shell pekerjaan jenkins:
locale
ditampilkan:
LANG =
LANGUAGE =
LC_CTYPE = "POSIX"
dll ...
env
tidak tidak menunjukkan LANG
dan LANGUAGE
variabel
id
menunjukkan ID pengguna (seperti yang diharapkan):
uid = 1008 (jenkins) gid = ...
file:
/etc/profile
mengandung:
export LANG = en_US.UTF-8
export LANGUAGE = en_US: en
/etc/default/locale
mengandung:
export LANG = en_US.UTF-8
export LANGUAGE = en_US: en
skrip startup /etc/init.d/jenkins
harus mengekspor lokal sistem:
# memuat lingkungan
jika [-r / etc / default / locale]; kemudian
. / etc / default / local
export LANG LANGUAGE
elif [-r / etc / environment]; kemudian
. / etc /
ekspor lingkungan LANG LANGUAGE
fi
Tentu saja saya reboot setelah memodifikasi locales;)
Apache juga menggunakan locales
sistem. Sistem saya adalah instalasi Ubuntu 14.04.
Apakah saya ketinggalan memeriksa sesuatu yang lain?
Terima kasih telah membaca!
Semoga ada yang bisa membantu :)
Jawaban:
Larutan:
Ini terjadi karena master Jenkins terhubung ke mesin slave melalui
non-interactive
shell, jadi/etc/profile
tidak dieksekusi, dan juga/etc/default/locale
tidak memiliki efek apa pun.non-interactive
kerang biasanya menggunakan~/.bashrc
.Hampir semua detail tentang topik ini dapat ditemukan di askubuntu:
/ubuntu/247738/why-is-etc-profile-not-invoked-for-non-login-shell
menambahkan ke
~/.bashrc
:melakukannya untukku.
'Masalah budak' ini juga dibahas di sini:
https://groups.google.com/forum/#!topic/jenkinsci-users/hscDs4pKIoU https://groups.google.com/forum/#!topic/jenkinsci-users / g0fNnDltqeM Salam, whosit
sumber