web-dev-qa-db-ja.com

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(jenkins)gid = ...

上記のコマンドをjenkinsジョブシェルに入力します。

表示されるlocale

LANG =
言語=
LC_CTYPE = "POSIX"
等...

envnotLANGおよびLANGUAGE変数を表示します

idはユーザーのIDを示します(予想どおり):

uid = 1008(jenkins)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言語をエクスポート
Elif [-r/etc/environment];その後
。/etc/environment
LANG言語をエクスポート
fi


もちろん、ロケールを変更した後、再起動しました;)

Apacheはシステムのロケールも使用します
私のシステムはUbuntu 14.04インストールです。
何か他のものをチェックするのを逃しましたか?

読んでくれてありがとう!
誰かが助けてくれることを願っています:)

10
whosit

解決:

これは、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/hscDs4pKIohttps://groups.google.com/forum/# !topic/jenkinsci-users/g0fNnDltqeM よろしく、whosit

10
whosit