Jenkinsで興味深い動作を発見しました。
Jenkinsのシェルは私のシステムロケールを使用しません。
Jenkinsはjenkins
私のシステムでユーザーとして実行されます。
SSH経由でログインjenkins
:
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
ユーザーIDの表示:
uid=1008(ジェンキンス) gid=...
Jenkinsジョブシェルに上記のコマンドを入力します。
locale
示す:
LANG =
LANGUAGE =
LC_CTYPE = "POSIX"
など...
env
するいいえ表示LANG
とLANGUAGE
変数
id
ユーザー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
エクスポート LANG LANGUAGE
elif [-r /etc/environment]
; /etc/environment
LANG LANGUAGE
fi エクスポート
もちろん、ロケールを変更して再起動しました。)
Apacheもシステムのロケールを使用します。
私のシステムはUbuntu 14.04インストールです。
私が他のものをチェックするのを見逃しましたか?
読んでくれてありがとう!
誰かが助けることができることを願っています:)
答え1
解決策:
これは、Jenkinsマスターがnon-interactive
シェルを介してスレーブマシンに接続されているため、実行されず、/etc/profile
効果が/etc/default/locale
ないために発生します。
non-interactive
シェルは通常使用されます~/.bashrc
。
このトピックのほとんどすべての詳細はaskubuntuで見つけることができます。
https://askubuntu.com/questions/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
よろしくお願いします。